2013-05-15 61 views
6

我想使用vim編寫python代碼,但是在自動縮進時出現問題。 首先,我從http://www.vim.org/scripts/script.php?script_id=790下載了最新的python.vim,並將其放在正確的目錄中。 然後我編輯了我的vimrc。使用vim編碼時自動縮進不起作用python

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','except'。 我該怎麼辦?非常感謝你。

回答

7

我在vimrc中有這麼長時間的這條線,不知道現在是否有更好的辦法。但你至少可以試一試。

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

當我將「filetype plugin indent on」添加到vimrc時,我得到了正確的自動縮進。謝謝。 –

1

那你掛不進行任何的自動縮進,只有語法高亮Vim腳本。

你所觀察的自動縮進是內置於VIM的一個,它是專爲編碼C,它只能識別這裏描述的關鍵字:

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

這就是爲什麼它適用於ifwhile但不是def(C中沒有def)。 您打開set cindent

你可能想嘗試像這樣的另一個腳本:

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

+0

實際上,當我將「filetype plugin indent on」添加到vimrc時,我得到了正確的自動縮進。這是否意味着我鏈接的腳本具有自動縮進,但我沒有打開它? –