Vim Python缩进不工作?

Vim Python缩进不工作?,python,vim,vim-plugin,Python,Vim,Vim Plugin,我在CentOS 5上安装了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.

我在CentOS 5上安装了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等来实现这一点。这不是上面这些文件的用途吗?为什么我必须在我的
.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

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

语言缩进插件使用这些设置,但通常还设置适合该语言的缩进表达式(
:he inde
)。因此,Python压头应该在块开始语句(def、class、for…)之后自动缩进,在结束语句(return、pass、continue…)之后自动缩进,并根据ts、sw、,。。。你已经准备好了


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

我的理解是python.vim文件可能只是一个语法突出显示文件,因为Python文件可以以多种方式缩进。规定了四个空格,但遗留文件可能会有所不同,包括使用选项卡

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

您还可以通过文件设置特定的设置,如果您有旧式文件,则可以使用

# vi: set tabstop=2 expandtab textwidth=70 filetype=python:

总之,../indent/python.vim文件不能为我设置tabstop、shiftwidth等…所以必须在vimrc中指定它们?如果我希望tabstop根据文件类型而有所不同,会发生什么情况?我是否可以将这些vimrc设置放在indent/python.vim文件中,以便仅为python文件加载它们?您可以将这些设置添加到indent/python.vim中并获得该结果,但更好的方法是将文件类型特定的设置添加为autocmds,该设置将在加载缓冲区后运行。(:何凹)
# vi: set tabstop=2 expandtab textwidth=70 filetype=python: