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

Posted

技术标签:

【中文标题】检查VIM中的变量更改位置?或者如何设置shfitwidth?【英文标题】:Check variable change location in VIM? Or how to set shfitwidth? 【发布时间】:2014-05-14 09:02:43 【问题描述】:

这不是一个很简单的问题。

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

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

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

我想知道是否有可能看到变量(在我的例子中是 shiftwidth)发生了变化;如果在更改此变量的可能位置是什么时这是不可能的..?有没有办法让 shiftwidth=2 通用......即使是 python 文件? (虽然python也建议使用4个空格,但我个人更喜欢2个)

【问题讨论】:

我觉得你正在寻找这样的东西:***.com/questions/158968/… ***.com/questions/891805/… 或 ***.com/questions/2011589/… 【参考方案1】:
:verbose set shiftwidth

告诉您当前值是什么以及它是在哪里定义的。见:help :verbose

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


将特定于文件类型的设置添加到您的配置中的肮脏方法是将类似这样的内容添加到您的vimrc

augroup Python
    autocmd!
    autocmd fileType python setlocal tabstop=2 shiftwidth=2 softtabstop=2 expandtab
augroup END

:help :autocmd


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

文件:

~/.vim/after/ftplugin/python.vim

其内容:

setlocal tabstop=2
setlocal shiftwidth=2
setlocal softtabstop=2
setlocal expandtab

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

【讨论】:

对于非二进制选项,例如'shiftwidth',无论您选择:verbose set shiftwidth 还是:verbose set shiftwidth?,都没有任何区别。我认为添加可选的? 是一个好习惯,因为它确实对二元期权产生了影响。例如,:verbose set expandtab 将设置 'expandtab' 选项,而不会告诉我之前设置或重置的位置。 非常感谢,这真的很有帮助:)【参考方案2】:

这可能是由 Python 的内置 ftplugin 文件设置的。如果你

:e $VIMRUNTIME/ftplugin/python.vim

然后搜索shiftwidth,你可能会发现它设置为4

【讨论】:

以上是关于检查VIM中的变量更改位置?或者如何设置shfitwidth?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 Vim 拼写检查中的突出显示样式?

如何检查位置设置是不是在更改时失败

vim :更改如何转到特定行

如何更改 vscode 的 VIM 扩展中的光标键

Vim/NeoVim 脚本如何检查终端模拟器

如何更改片段中的主要活动变量