2013-05-15 12 views
6

का उपयोग करते हुए मैं पाइथन कोड लिखने के लिए विम का उपयोग करना चाहता हूं लेकिन ऑटो इंडेशन पर कोई समस्या है। सबसे पहले मैंने नवीनतम python.vim को http://www.vim.org/scripts/script.php?script_id=790 से डाउनलोड किया और इसे सही डीआईआर में रखा। फिर मैंने अपना vimrc संपादित किया।ऑटो इंडेंट काम नहीं करता है जब विम कोडिंग पायथन

syntax on 
set nu 
set tabstop=4 
set softtabstop=4 
set shiftwidth=4 
"set cindent 
set autoindent 
set smartindent 
set expandtab 
set filetype=python 
au BufNewFile,BufRead *.py,*.pyw setf python 

अब मुझे लगता है कि 'for', 'if', 'while' जैसे कीवर्ड पूरी तरह से ऑटोइंडेंट कर सकते हैं। लेकिन यह 'def', 'try', 'को छोड़कर' पर काम नहीं करता है। मुझे क्या करना चाहिए? आपका बहुत बहुत धन्यवाद।

उत्तर

7

मेरे पास यह लाइन लंबे समय तक मेरे वीमआरसी में है, यह नहीं पता कि आजकल बेहतर तरीका है या नहीं। लेकिन आप इसे कम से कम कोशिश कर सकते हैं।

set cindent 
autocmd FileType python setlocal foldmethod=indent smartindent shiftwidth=4 ts=4 et cinwords=if,elif,else,for,while,try,except,finally,def,class 

और मैं

filetype plugin indent on 

भी

+0

यह एक अच्छा विचार है और यह काम करता है। बहुत बहुत धन्यवाद :) –

+0

जब मैं vimrc पर "फ़ाइल टाइप प्लगइन इंडेंट" जोड़ता हूं, तो मुझे ऑटो-इंडेंटेशन सही मिलता है। धन्यवाद। –

1

है कि vim स्क्रिप्ट आप किसी भी स्वत: इंडेंटेशन, केवल वाक्य रचना हाइलाइटिंग नहीं करता है से जुड़ा हुआ।

स्वत: इंडेंटेशन आप देख रहे हैं, एक है कि vim में बनाया गया है यह सी कोडिंग के लिए डिज़ाइन किया गया है, और यह केवल कीवर्ड यहाँ वर्णित पहचानता है:

http://vimdoc.sourceforge.net/htmldoc/options.html#%27cinwords%27

इसलिए यह if लिए काम करता है और while लेकिन def नहीं (सी में def नहीं है)। आपने इसे set cindent पर चालू किया है।

आप इस तरह एक और स्क्रिप्ट की कोशिश करना चाहते हो सकता है:

http://www.vim.org/scripts/script.php?script_id=974

+0

वास्तव में जब मैं vimrc पर "फ़ाइल टाइप प्लगइन इंडेंट" जोड़ता हूं, तो मुझे ऑटो-इंडेंटेशन सही मिलता है। क्या इसका मतलब है कि जिस स्क्रिप्ट से मैंने लिंक किया है, उसके पास ऑटो इंडेंटेशन है लेकिन मैंने इसे चालू नहीं किया? –

संबंधित मुद्दे