为什么vim不遵守python文件中的expandtab?
安装Vundle后,我的vim不再遵守我的expandtab设置。我的制表符设置为2个空格,但现在在python文件中它不再这样做了。此行正在调用此问题:为什么vim不遵守python文件中的expandtab?,vim,indentation,Vim,Indentation,安装Vundle后,我的vim不再遵守我的expandtab设置。我的制表符设置为2个空格,但现在在python文件中它不再这样做了。此行正在调用此问题: filetype plugin on 该行的功能是什么(vundle需要它)?此外,我可以做些什么来确保遵守我的设置 谢谢 VIMRC:覆盖设置 可能是这些设置被特定于语言的设置覆盖。有关更多信息,请参阅: 快速入门的方法是将所有特定于语言的内容从.vimrc文件移到名为.vim/ftplugin/language.vim的文件中(或Win
filetype plugin on
该行的功能是什么(vundle需要它)?此外,我可以做些什么来确保遵守我的设置
谢谢
VIMRC:覆盖设置 可能是这些设置被特定于语言的设置覆盖。有关更多信息,请参阅: 快速入门的方法是将所有特定于语言的内容从.vimrc文件移到名为.vim/ftplugin/language.vim的文件中(或Windows上的$HOME/vimfiles/ftplugin/language.vim) 在这些位置检查python特定的
.vim
文件
打开文件类型
Vundle似乎需要关闭文件类型
,我不确定您是否应该重新打开它。for Vundle上有一个线程解释了为什么需要上的文件类型。也许这将提供一些见解
我还认为在
上缩进文件类型插件,然后在
上缩进文件类型是不必要的。根据,前者打开检测、插件和缩进,后者打开检测并保持插件和缩进不变:
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
问题是您的设置被Vim中的文件类型插件覆盖。问题在于:
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
的形式调用函数,而不是在after文件中调用callsetuppython()
另一种方法是将所有内容保存在.vimrc
中,但您可以使用vimcenter
自动命令为python设置文件类型自动命令来设置首选项。通过等待直到触发VimEnter
,所有其他插件都将有时间设置其自动命令,因此您的将被添加到列表的末尾。这允许您在python插件的FileType
autocommand之后运行,并设置您自己的设置。不过这有点乱,上面的after/
机制是实现这一点的首选方法
FWIW,我在SetupSource()
函数中保留了许多常用设置,可以从许多不同的文件类型调用这些设置。然后我需要调用SetupPython()
调用SetupSource()
。这有助于保持特定功能的整洁并减少一些重复。如果有帮助,请在此处查看我的vimrc文件中的函数:这是我的vimrc:。我没有什么特别的东西。知道怎么回事吗?通常最好编辑你的问题,将.vimrc的内容包括在内。这仍然是一个链接。我说内容。原因是pastebin可能不会一直存在。:)那似乎太过分了,你不觉得吗?它有60行内容,使得浏览网页变得很困难。您应该包括内容。我建议使用setlocal而不是set来实现ftplugins。请注意,最新版本的python.vim
允许您通过设置来关闭PEP-8样式:let g:python\u recommended\u style=0
。另请参见:JFTR python.vim set tabstop=8当我总是使用tabstop=4时,您是否有理由不想将setlocal调用放在/python.vim之后,而不是调用另一个文件中的函数?@Seth问得好。在我的例子中,vimfiles是由许多个人共享的,因此重写一个函数并最终得到您想要的更容易。否则,就没有优势。
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()