在vim脚本中,如何判断是否在.vimrc中指定了设置?

时间:2011-06-25 19:58:39

标签: vim

在vim插件中,如何判断用户是否已在其.vimrc文件中设置变量?

例如,我在.vimrc

set shiftwidth=2

然后我加载了一个

的插件
set shiftwidth=3

所以我想像这样修改插件:

if !exists("shiftwidth")
  set shiftwidth=3
endif

但是当我加载一个新的vim窗口时加载了修改后的插件,我的标签仍然设置为3而不是2

除非在shiftwidth=3中另有说明,否则如何设置.vimrc除外?

1 个答案:

答案 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的情况下。总而言之,仍然不推荐。