为插件变量设置默认值的最佳方法是什么?
理想情况下,我希望在.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.
优点是,如果您在插件中使用大量具有默认值的变量,则它会更短。