检查VIM中的变量位置?或者如何设置shfitwidth?

son*_*gyy 2 vim vim-plugin

这不是一个非常简单的问题.

我发现python文件的"shiftwidth"设置为4,而我在.vimrc的底部有这些:

set tabstop=2                                                               
set shiftwidth=2                                                               
set softtabstop=2                                                              
set expandtab 
Run Code Online (Sandbox Code Playgroud)

所有其他文件类型的shiftwidth为2; 但它仅适用于python 4.

我想知道是否可以看到变量(在我的情况下,shiftwidth)的位置已经改变; 如果这个变量被改变的可能位置是不可能的话.有没有办法让shiftwidth = 2普遍......甚至对于python文件?(虽然它也推荐使用4个空格用于python,但我个人更喜欢2)

rom*_*inl 5

:verbose set shiftwidth
Run Code Online (Sandbox Code Playgroud)

告诉您当前值和定义的位置.见:help :verbose.

文件类型插件是在FileType触发相应事件后获取的,因此它们将覆盖您的选项vimrc.


将特定于文件类型的设置添加到配置的脏方法是将以下内容添加到您的vimrc:

augroup Python
    autocmd!
    autocmd fileType python setlocal tabstop=2 shiftwidth=2 softtabstop=2 expandtab
augroup END
Run Code Online (Sandbox Code Playgroud)

:help :autocmd.


干净的方法是将您想要的设置放入自定义设置ftplugin.

文件:

~/.vim/after/ftplugin/python.vim
Run Code Online (Sandbox Code Playgroud)

其内容:

setlocal tabstop=2
setlocal shiftwidth=2
setlocal softtabstop=2
setlocal expandtab
Run Code Online (Sandbox Code Playgroud)

请注意使用setlocal而不是set因为您不希望在任何地方应用这些设置.

  • 对于非二进制选项,例如`'shiftwidth'`,无论你是`:verbose set shiftwidth`还是`:verbose set shiftwidth?`都没有任何区别.我认为添加可选的`?`是一个好习惯,因为它_does_对二元期权有所区别.例如,`:verbose set expandtab`将设置`'expandtab'`选项,而不告诉我任何关于它之前设置或重置的位置. (3认同)