在vim插件中,我如何判断用户是否已经在其.vimrc文件中设置了变量?
例如,我在.vimrc中有
set shiftwidth=2然后我加载一个插件,该插件具有
set shiftwidth=3所以我认为修改插件的方法如下:
if !exists("shiftwidth")
set shiftwidth=3
endif但是,当我加载一个新的vim窗口并加载了修改后的插件时,我的选项卡仍然设置为3,而不是2。
除非在.vimrc中另有说明,否则如何才能使它只设置shiftwidth=3
发布于 2011-06-26 04:08:26
这些命令应该显示shiftwidth的设置位置:
:set verbose=15
:set shiftwidth
:set verbose=0如果您希望以编程方式对该信息执行某些操作,则需要对详细输出执行redirect操作,并根据需要对其进行解析:
:redir => myvariable
:set verbose=15
:set shiftwidth
:set verbose=0
:redir ENDmyvariable现在将拥有原本会打印到屏幕上的文本。
REVISED 这里是一种我认为你可以在评论中澄清的方法。
在用户的vimrc中添加最后一行,将当前的shiftwidth值保存到一个全局变量中。该值将在加载任何插件之前保存,除非插件在最后一行之前显式地从vimrc中获取。然后,您可以在自己的插件中将shiftwidth重置为此值。
[everything in vimrc comes before this line]
:let g:vimrc_shiftwidth = &shiftwidth您可以使用类似于write >> [file]命令的命令以编程方式添加此行。您可能会添加一个注释,说明是哪个插件将此命令添加到vimrc中的。此外,我认为这不会捕获正确的值,例如,在用户使用exrc选项并在不同的vimrc中设置shiftwidth的情况下。总而言之,还是不推荐。
https://stackoverflow.com/questions/6480170
复制相似问题