В Vim, какие настройки / команды начинаются с префикса (b :, g :)?

26

Я установил этот плагин с помощью Vundle и заметил, что он имеет некоторые настройки (README называет их переменными), например:

b:javascript_fold

а также

g:javascript_conceal

README говорит, что я «могу добавить их в свой, .vimrcчтобы включить / отключить их функции». Но я не уверен, как установить их через :. Эти переменные недоступны через setили echoи не являются командами или функциями. Как я могу установить / проверить это?

Дмитрий Минковский
источник

Ответы:

48

Это внутренние переменные.

Вы создаете и модифицируете их с помощью :letкоманды:

:let g:var_name = 1

Вы уничтожаете их с помощью :unlet.

Вы осматриваете их :echo.

Префикс показывает область действия переменной; от :help internal-variables:

buffer-variable    b:    Local to the current buffer.
window-variable    w:    Local to the current window.
tabpage-variable   t:    Local to the current tab page.
global-variable    g:    Global.
local-variable     l:    Local to a function.
script-variable    s:    Local to a |:source|'ed Vim script.
function-argument  a:    Function argument (only inside a function).
vim-variable       v:    Global, predefined by Vim.

Добавление такой переменной в ваш файл ~/.vimrcвыглядит так:

let g:var_name = 1

Как правило, только ваши глобальные переменные должны быть добавлены в ваш ~/.vimrcбуфер, локальные переменные должны использоваться в плагинах файловых типов.

romainl
источник
2
Для полноты: без префикса: в функции: локально для функции; в противном случае: глобальный
Том Хейл
11

Переменные конфигурации не являются опциями, они только «эмулируют» те, что для плагинов. Поэтому вы не используете :set, но :let:echoперечислить их текущее значение).

Символ перед переменной определяет ее область действия. g:означает глобальный; их обычно нужно установить перед загрузкой плагина, т.е.

let g:javascript_conceal = 1

в ваш ~/.vimrc (и перезапуск Vim).

Поскольку некоторые настройки применяются только к определенным типам файлов , они используют b:префикс. Установка их ~/.vimrcпросто применила бы их к первому открытому буферу, а это не то, что вам нужно. Вместо этого вам нужно подключиться к определению типа файла механизму .

Если вы хотите включить параметр конфигурации только для определенных типов файлов, используйте :let b:var = valueвместо этого и поместите соответствующие команды ~/.vim/after/ftplugin/{filetype}.vim, где {filetype}указан фактический тип файла (например javascript). (Это требует, чтобы у вас был :filetype plugin on; использование каталога после позволяет вам переопределить любые настройки типа файла по умолчанию, сделанные $VIMRUNTIME/ftplugin/{filetype}.vim.)

Кроме того, вы можете определить :autocmd FileType {filetype} setlocal option=valueнепосредственно в вашем ~/.vimrc, но это имеет тенденцию становиться громоздким, когда у вас есть много настроек.

autocmd Filetype javascript let b:javascript_fold = 1
Инго Каркат
источник