6

为插件变量设置默认值的最佳方法是什么?

理想情况下,我希望在.vimrc加载之前设置这些变量,以便用户可以根据需要覆盖这些值。那可能吗?

4

3 回答 3

10

你在写插件吗?

您的插件可能会在您的用户之后执行~/.vimrc:在此之前您不能做任何事情。

您可能会忘记~/.vimrc在脚本中执行和使用条件之前做任何事情:

if !exists("g:pluginname_optionname")
  let g:pluginname_optionname = default_value
endif

或者,您可以使用自动加载脚本 ( :h autoload) 并要求您的用户~/.vimrc在进行任何自定义之前将以下内容放入其中:

call file_name#function_name()

用那个函数做所有的初始化工作。

于 2013-03-09T10:02:55.063 回答
3

只有在加载插件时变量不存在时,您的插件才应设置默认值。您可以使用该exists()功能进行检查。

例如,在插件脚本的顶部:

if !exists("g:MyPluginVariable")
    let g:MyPluginVariable = default_value
endif

现在,如果g:MyPluginVariable在 vimrc 中设置,它不会被你的插件重新定义。

于 2013-03-09T10:02:20.800 回答
2

还有一种get()方法,利用您可以访问全局范围g:的优势Dictionary

let g:pluginname#optionname = get(g:, 'pluginname#optionname', default_value)

get() 查询g:范围作为键的 a ,如果在那里找不到Dictionarypluginname#optionname,将返回。default_valuelet语句要么重新分配它具有的相同值,要么default_value.

优点是,如果您在插件中使用大量具有默认值的变量,则它会更短。

于 2015-09-24T09:16:59.243 回答