2013-03-09 3 views
4

Каков наилучший способ установить значения по умолчанию для переменных плагина?vim: где установить значения по умолчанию для переменных плагина?

В идеале, я хотел бы иметь эти переменные, установленные до загрузки .vimrc, так что пользователь может переопределить эти значения, если захочет. Это возможно?

ответ

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

+1

Отличные умы .... –

2

Существует также get() подход, принимая преимущество, что вы можете получить доступ к глобальной области g: как Dictionary:

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

get() запрашивает g: сферу как Dictionary для ключа pluginname#optionname и возвратит default_value если он не может найти ключ там. Оператор let либо переназначает то же самое, что и у него, либо default_value.

Преимущество в том, что это короче, если вы используете множество переменных со значениями по умолчанию в своем плагине.

Смежные вопросы