12

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

2 回答 2

5

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

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

au FileType python setl shiftwidth=4 tabstop=4

您还可以使用模式行按文件设置特定设置,如果您确实有旧文件,这很方便

# vi: set tabstop=2 expandtab textwidth=70 filetype=python:
于 2010-01-06T16:04:47.737 回答
2

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

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

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

于 2010-01-06T08:54:16.487 回答