Vim Python缩进不起作用?

我在CentOS 5上安装了Vim 7(增强版),它配备了所有常用的Vim插件/脚本。

$ find /usr/share/vim/vim70/ -name *python*
/usr/share/vim/vim70/syntax/python.vim
/usr/share/vim/vim70/ftplugin/python.vim
/usr/share/vim/vim70/indent/python.vim
/usr/share/vim/vim70/autoload/pythoncomplete.vim

我认为当打开一个以.py( vim file.py )结尾的文件时,它会自动加载这些插件,但我不确定是这种情况。 我想要的是:

按TAB键并接收四个空格。 自动缩进套件,条件等的下一行

我通过在.vimrc文件中明确设置tabstop,shiftwidth等工作。 这不是上述Python文件的用途吗? 为什么我必须在.vimrc设置这些东西? 我如何从Vim插件获取这些功能?

当前.vimrc:

syntax on
set hls
set expandtab
set textwidth=0
set tabstop=4
set softtabstop=4
set shiftwidth=4
set autoindent
set backspace=indent,eol,start
set incsearch
set ignorecase
set ruler
set wildmenu
set smarttab
filetype indent on
filetype on
filetype plugin on

在你的vimrc中设置tabstop,shiftwidth等是正确的。 这些设置您的全局设置,并作为文件类型特定的缩进支持的参数。

语言缩进插件使用这些设置,但通常还会设置适合该语言的缩进表达式( :he inde )。 因此,Python压头应该在块打开语句(def,class,for ...)后自动缩进,并且在关闭之后(返回,通过,继续...)缩进并根据ts,sw, ...你已经定下了。

如果您仍然不确定插件是否正在加载缓冲区,只需执行以下操作:filetype显示检测,插件和缩进设置,以及:set ft? 查看检测到的类型。


我的理解是,python.vim文件可能只是一个语法高亮文件,因为Python文件可以多种方式缩进。 PEP8规定了四个空格,但传统文件可能会不同,包括使用制表符。

我们的一些传统Python文件实际上每个缩进使用两个空格。 因此,我将Python缩进Vim,并根据文件和文件类型对其进行配置。 .vimrc中的以下行给出了Python特有的设置,这些设置不同于说我的xml,xhtml和html(两个空格)。

au FileType python setl shiftwidth=4 tabstop=4

您还可以通过带有模式行的文件来设置特定的设置,如果您有传统文件,则该模式行很方便。

# vi: set tabstop=2 expandtab textwidth=70 filetype=python:
链接地址: http://www.djcxy.com/p/8715.html

上一篇: Vim Python indentation not working?

下一篇: I have a vim config. However, when I paste text