在vim插件中,如何判断用户是否已在其.vimrc文件中设置变量?
例如,我在.vimrc
:
set shiftwidth=2
然后我加载了一个
的插件set shiftwidth=3
所以我想像这样修改插件:
if !exists("shiftwidth")
set shiftwidth=3
endif
但是当我加载一个新的vim窗口时加载了修改后的插件,我的标签仍然设置为3
而不是2
。
除非在shiftwidth=3
中另有说明,否则如何设置.vimrc
除外?
答案 0 :(得分:2)
这些命令应显示shiftwidth
的设置位置:
:set verbose=15
:set shiftwidth
:set verbose=0
如果您想以编程方式对该信息执行某些操作,则需要redirect
详细输出并根据需要对其进行解析:
:redir => myvariable
:set verbose=15
:set shiftwidth
:set verbose=0
:redir END
myvariable
现在将有文本打印到屏幕上。
已修订的答案 这是我认为您可以在评论中做出澄清的方式。
将最后一行添加到用户的vimrc,以将shiftwidth的当前值保存到全局变量。除非在最后一行之前的vimrc中明确提供插件,否则将在加载任何插件之前保存该值。然后,您可以在自己的插件中将shiftwidth重置为此值。
[everything in vimrc comes before this line]
:let g:vimrc_shiftwidth = &shiftwidth
您可以使用write >> [file]
命令等编程方式添加此行。大概你会包含一个注释,表明插件已将此命令添加到vimrc。此外,我认为这不会捕获正确的值,例如,在用户使用exrc选项并在另一个vimrc中设置shiftwidth的情况下。总而言之,仍然不推荐。