使用vim编写Python代码时,自动缩进无法正常工作

8

我想使用vim来编写Python代码,但是自动缩进出现了问题。首先,我从http://www.vim.org/scripts/script.php?script_id=790下载了最新的python.vim插件,并将其放置在正确的目录中。然后,我编辑了我的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'、'except'却不起作用。我该怎么办?非常感谢您。
2个回答

8

我在我的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  


当我在vimrc中添加“filetype plugin indent on”时,自动缩进就正确了。谢谢。 - Non-native English Speaker

2
那个你链接的 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


实际上,当我在vimrc中添加“filetype plugin indent on”时,自动缩进就正确了。这是否意味着我链接的脚本具有自动缩进功能,但我没有打开它? - Non-native English Speaker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接