Vim Python缩进无法正常工作?

Car*_*tem 12 python vim vim-plugin

我在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
Run Code Online (Sandbox Code Playgroud)

我认为当打开以.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
Run Code Online (Sandbox Code Playgroud)

小智 5

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

我们的一些遗留Python文件实际上每个缩进使用两个空格.所以我将Python缩进到Vim并按文件和每个文件类型配置它..vimrc中的以下行给出了特定于Python的设置,这些设置与我的xml,xhtml和html(两个空格)不同.

au FileType python setl shiftwidth=4 tabstop=4
Run Code Online (Sandbox Code Playgroud)

你也可以用一组文件中的特定设置模式行,如果你有旧的文件,这是很方便的.

# vi: set tabstop=2 expandtab textwidth=70 filetype=python:
Run Code Online (Sandbox Code Playgroud)


abe*_*yer 2

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

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

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