2013-03-09 67 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

好處是,如果您在插件中使用了大量具有默認值的變量,則它更短。