为插件变量设置默认值的最佳方法是什么?
理想情况下,我希望在.vimrc
加载之前设置这些变量,以便用户可以根据需要覆盖这些值。那可能吗?
为插件变量设置默认值的最佳方法是什么?
理想情况下,我希望在.vimrc
加载之前设置这些变量,以便用户可以根据需要覆盖这些值。那可能吗?
你在写插件吗?
您的插件可能会在您的用户之后执行~/.vimrc
:在此之前您不能做任何事情。
您可能会忘记~/.vimrc
在脚本中执行和使用条件之前做任何事情:
if !exists("g:pluginname_optionname")
let g:pluginname_optionname = default_value
endif
或者,您可以使用自动加载脚本 ( :h autoload
) 并要求您的用户~/.vimrc
在进行任何自定义之前将以下内容放入其中:
call file_name#function_name()
用那个函数做所有的初始化工作。
只有在加载插件时变量不存在时,您的插件才应设置默认值。您可以使用该exists()
功能进行检查。
例如,在插件脚本的顶部:
if !exists("g:MyPluginVariable")
let g:MyPluginVariable = default_value
endif
现在,如果g:MyPluginVariable
在 vimrc 中设置,它不会被你的插件重新定义。
还有一种get()
方法,利用您可以访问全局范围g:
的优势Dictionary
:
let g:pluginname#optionname = get(g:, 'pluginname#optionname', default_value)
get()
查询g:
范围作为键的 a ,如果在那里找不到Dictionary
键pluginname#optionname
,将返回。default_value
该let
语句要么重新分配它具有的相同值,要么default_value
.
优点是,如果您在插件中使用大量具有默认值的变量,则它会更短。