vim tabstop设置未生效

时间:2018-02-16 04:58:58

标签: vim

  

更新:使用Ingo Karkat的故障排除找到了一个解决方案我能够通过以下方式识别我的设置被覆盖的位置:verbose sw? STS?从此我可以使用我自己的设置创建文件~/.vim/after/ftplugin/python.vim。最后重新启动vim使更改生效,因为我的:source~ / .vimrc工作不足以加载这些更改。在后果,可能是因为我的新设置不在vimrc中。无论哪种方式,接受的答案都是最终解决了我所遇到的问题,生活可以像宣传的那样继续下去。

我是一个新的vim用户,我很想知道tabstops和softtabstop是如何工作的。我做了一些阅读,并决定我想要我的设置如下

set shiftwidth=2
set softtabstop=2
set tabstop=2
set expandtab

我期望制表符为2个空格但是当我将这些添加到我的vimrc和资源时。在我的python文件中执行gg = G的.vimrc不应用我期望的更改,而是在我的缩进上放置4个空格。如果我进入插入模式,我也会得到4个缩进空格。我没有设置这些核心吗?我以前有过

autocmd FileType python set sw=4
autocmd FileType python set ts=4
autocmd FileType python set sts=4

我想也许这个设置即使在删除它并重新加载vimrc之后仍然在系统中。我尝试添加

autocmd FileType python sw=2 sts=2 ts=2 et

然而,这无法纠正我获得4个空格vs 2的问题。我错过了什么?插件可能会覆盖这个吗?我在/语法之后看了一下,但那里只有一个html.vim。我有一些插件: Vundle,YouCompleteMe,taglist,ultisnips,syntastic,vim-surround

不确定这些是否可能是原因或我如何进一步解决这个问题。希望vim众神来这里救我。

1 个答案:

答案 0 :(得分:3)

Vim可以告诉你上次设置这些设置的位置:

:verbose setlocal ts? sts? et? sw?

$VIMRUNTIME/ftplugin/python.vim可能会覆盖您的全局设置。这有以下代码(在最新的Vim 8.0中):

if !exists("g:python_recommended_style") || g:python_recommended_style != 0
    " As suggested by PEP8.
    setlocal expandtab shiftwidth=4 softtabstop=4 tabstop=8
endif

正如您所见,:let g:python_recommended_style = 0(例如在~/.vimrc中),您可以停用此设置。可能已引入此条件防护,因为许多用户抱怨预设。通常,文件类型插件没有这样,但您始终可以通过目录后的脚本覆盖设置:

:setlocal ts=...命令放入~/.vim/after/ftplugin/python.vim。或者,您可以直接在:autocmd FileType python ...中定义~/.vimrc,但是一旦您进行了多次自定义,这往往会变得难以处理。正如您所提到的,:autocmd不适合您,可能还有其他自定义设置(:verbose setlocal应该告诉您)。在这种情况下,您需要找到一个特殊的解决方案,具体取决于所涉及的插件。