Найти в Дзене
Блокнот математика

Рубрика "Секреты Вим". Локальные опции

См. введение в работу с опциями Вим. Эта заметка просто дополняет предыдущую. Некоторые опции глобальны: относятся к Вим в целом, но большинство влияют только на окно или буфер (файл). Например, number включает номера строк в окне, а shiftwidth задает отступ в пробелах для буфера. Тогда как laststatus определяет, когда показывать строку статуса (в каждом окне, когда окон больше одного и т.п.), и это глобально. Обычно все достаточно интуитивно. Однако некоторые нюансы полезно знать. Заметка для продвинутых, предупреждаю. При создании нового окна (команда split и ей подобные), локальные опции наследуются. Но при создании нового буфера (файла) эти локальные опции надо откуда-то взять. Поэтому для локальных опций есть глобальные значения, играющие роль значений по умолчанию. И эти глобальные значения можно менять, как обычные. Можно и наоборот. Есть глобальные опции, например, makeprg, задающая имя программы типа make. Она глобальная: задал ее, и это сразу для всех окон и буферов. Но можн

См. введение в работу с опциями Вим. Эта заметка просто дополняет предыдущую.

Некоторые опции глобальны: относятся к Вим в целом, но большинство влияют только на окно или буфер (файл). Например, number включает номера строк в окне, а shiftwidth задает отступ в пробелах для буфера. Тогда как laststatus определяет, когда показывать строку статуса (в каждом окне, когда окон больше одного и т.п.), и это глобально.

Обычно все достаточно интуитивно. Однако некоторые нюансы полезно знать. Заметка для продвинутых, предупреждаю.

При создании нового окна (команда split и ей подобные), локальные опции наследуются. Но при создании нового буфера (файла) эти локальные опции надо откуда-то взять. Поэтому для локальных опций есть глобальные значения, играющие роль значений по умолчанию. И эти глобальные значения можно менять, как обычные.

Можно и наоборот. Есть глобальные опции, например, makeprg, задающая имя программы типа make. Она глобальная: задал ее, и это сразу для всех окон и буферов. Но можно задать локальное значение для данного файла; тогда для всех будет "стандартный" make, но в одном окошке свой (например, perlmake). Если локальное значение убрать, то останется глобальное, что и логично. Впрочем, есть тонкости.

Команда :setlocal аналогична set, но задает значение локально: для буфера или окна. Если локальной опции такой нет, задается глобальное значение. Если опустить значение текстовой/числовой опции, то локальное значение будет удалено и в свои права опять вступит глобальное: setlocal xx=

Но для флагов так не годится, так как они через знак равенства и не задаются. Для них надо сбрасывать локальное значение так: setlocal xx<

Для текстовых/числовых опций такой синтаксис делает локальное значение равным глобальному. Это не то же самое, что и сброс локального, так как глобальное потом может поменяться, а локальное останется.

Однако тот же трюк с командой set именно что сбрасывает локальное значение: set xx< эквивалентно setlocal xx=

Есть команда setglobal, которая меняет глобальное значение, не меняя локального. Вся разница изложена в таблице.

Из Справки
Из Справки

Удачи, коллеги

Путеводитель по рубрике

Путеводитель по каналу