安装 Vundle 后,我的 vim 不再遵循我拥有的 expandtab 设置。我的选项卡被设置为 2 个空格,但现在在 python 文件中它不再这样做了。此行正在调用问题:
filetype plugin on
这条线有什么作用(vundle 要求)?另外,我能做些什么来确保我的设置得到遵守?
谢谢!
VIMRC:pastebin.com/tGmfCi78
最佳答案
问题是您的设置被作为 Vim 一部分的文件类型插件覆盖。问题在 ftplugin/python.vim
:
" As suggested by PEP8.
setlocal expandtab shiftwidth=4 softtabstop=4 tabstop=8
默认情况下,python 插件会尝试将您的源代码设置为符合 PEP8,因此它正在调整制表位。您将需要这些插件必须提供的一些功能,但您可能需要设置自己的自动命令来修复您不喜欢的任何内容。
有两种方法可以做到这一点。如果您有
~/.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
autocommand 为 python 设置 FileType 自动命令以设置您的首选项。等到 VimEnter
被触发,所有其他插件将有时间设置它们的自动命令,因此您的将被添加到列表的末尾。这允许您在 python 插件的 FileType
之后运行自动命令并设置您自己的设置。不过这有点乱,after/
上述机制是执行此操作的首选方式。FWIW,我保留在
SetupSource()
中的许多常见设置从多个不同的函数中调用FileType
s。那么我会有 SetupPython()
调用 SetupSource()
.这有助于保持特定功能更清晰并减少一些重复。如果有帮助,请在此处查看我的 vim 文件中的函数:https://github.com/jszakmeister/vimfiles/blob/master/vimrc#L5328
关于vim - 为什么vim不遵守python文件中的expandtab?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21073496/