安装Vundle后,我的vim不再遵循我的expandtab设置。我的标签设置为2个空格,但现在在python文件中它不再这样做。这条线正在调用这个问题:
filetype plugin on
这条线做什么(vundle要求)?另外,我该怎么做才能确保我的设置得到遵守?
谢谢!
VIMRC:pastebin.com/tGmfCi78
答案 0 :(得分:22)
问题是你的设置被一个属于Vim的文件类型插件覆盖。问题出在ftplugin/python.vim
:
" As suggested by PEP8.
setlocal expandtab shiftwidth=4 softtabstop=4 tabstop=8
python插件默认尝试将源代码设置为符合PEP8,因此它正在调整tabstop。您将需要这些插件提供的一些功能,但您可能需要设置自己的自动命令来修复您不喜欢的任何内容。
有两种方法可以做到这一点。如果您有~/.vim
文件夹,最简单的方法是添加文件~/.vim/after/ftplugin/python.vim
:
" Here, you can set the setting directly, or call a command or function
" to help you. We'll call a command, and then implement that command in
" your top-level vimrc to help keep things in one place.
SetupPython
在.vimrc
中,添加:
function! SetupPython()
" Here, you can have the final say on what is set. So
" fixup any settings you don't like.
setlocal softtabstop=2
setlocal tabstop=2
setlocal shiftwidth=2
endfunction
command! -bar SetupPython call SetupPython()
后一位只允许您在后文件中将该函数称为SetupPython
而不是call SetupPython()
。
另一种方法是保留.vimrc
中的所有内容,但是使用VimEnter
自动命令为python设置FileType自动命令以设置首选项。通过等待VimEnter
被触发,所有其他插件将有时间设置其自动命令,因此您的将被添加到列表的末尾。这允许您在python插件的FileType
自动命令之后运行并设置您自己的设置。这有点乱,上面的after/
机制是这样做的首选方式。
FWIW,我保留在SetupSource()
函数中的许多常见设置可以从许多不同的FileType
调用。然后我会SetupPython()
致电SetupSource()
。这有助于保持特定功能更清洁并减少一些重复。如果有帮助,请在此处查看我的vimfiles中的功能:https://github.com/jszakmeister/vimfiles/blob/master/vimrc#L5328
答案 1 :(得分:1)
重写设置
可能是语言特定设置覆盖了设置。有关详细信息,请参阅http://vim.wikia.com/wiki/Keep_your_vimrc_file_clean:
快速入门的方法是将.vimrc文件中所有特定于语言的内容移动到名为.vim / ftplugin / language.vim的文件中(或Windows上的$ HOME / vimfiles / ftplugin / language.vim) 。
在这些位置检查特定于python的.vim
文件。
文件类型
Vundle似乎需要filetype off
,我不确定你是否应该重新打开它。 Vundle的github issues page上有一个帖子解释了为什么filetype on
是必需的。也许这会提供一些见解。
我还认为让filetype plugin indent on
后跟filetype on
更加重要。根据{{3}},前者将检测,插件和缩进打开,后者打开检测并保持插件和缩进不变:
Overview: *:filetype-overview*
command detection plugin indent
:filetype on on unchanged unchanged
:filetype off off unchanged unchanged
:filetype plugin on on on unchanged
:filetype plugin off unchanged off unchanged
:filetype indent on on unchanged on
:filetype indent off unchanged unchanged off
:filetype plugin indent on on on on
:filetype plugin indent off unchanged off off