2013-03-09 23 views

回答

7

你在写插件吗?

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

你可以忘掉至~/.vimrc执行做之前任何事情,在你的脚本使用条件:

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

或者你可以使用一个自动加载脚本(:h autoload),并要求用户把类似的请在~/.vimrc之前进行任何定制:

call file_name#function_name() 

使用该函数执行所有初始化操作。

3

如果加载插件时该变量不存在,您的插件应只设置默认值。您可以使用exists()函数来检查它。

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

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

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

+1

Oooooooh,我们甚至选择了相同的'default_value'! – romainl 2013-03-09 10:03:49

+1

伟大的思想.... – 2013-03-09 10:04:37

2

也有get()办法,利用您可以访问全球范围内g:作为Dictionary

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

get()查询g:范围为Dictionary的关键pluginname#optionname并且将返回default_value如果它在那里找不到钥匙。 let声明重新分配了它的相同值或default_value

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