У меня есть два буфера в VIM:
:ls
1 %a ".vimrc" line 1
2 #h "script.sh" line 1
Press ENTER or type command to continue
Как видно выше, я на первом буфере. Теперь, если я выполню :set softtabstop=16
команду, то я ожидаю, что она повлияет на оба буфера. Однако это не так - хотя sts
значение для первого буфера действительно изменяется, и Tabключ вставляет четыре символа табуляции ( ts=4
), тогда для второго буфера sts
значение по-прежнему 4
:
:ls
1 #h + ".vimrc" line 1
2 %a + "script.sh" line 1
softtabstop=4
Press ENTER or type command to continue
Почему это так? Я думал, что set
влияет на все буферы и setlocal
влияет только на активный буфер ..
:setglobal
.'encoding'
.vimscript
вызова функции?setbufvar
которая может быть использована для достижения этой цели. Сначала не нашел.Не эксперт @Martin, но при чтении
:help set
вам нужно будет "сбросить" локальное значениеsts
в каждом буфере, чтобы этот буфер воспринял любое новое глобальное значение.setlocal sts=
(или для логических флаговsetlocal flag<
). Kinda имеет смысл, локальные настройки инициализируются текущими глобальными значениями при открытии, затем сохраняют локальные значения, пока не будет указано иное. Если в игре нет локальных настроек, следует выбрать новые глобальные значения.Опять же, не будучи экспертом, я рискнул бы предположить, что у второго буфера была явная локальная настройка до более поздней
set
. Более 50/50, что мое понимание неверно, так как мне до сих пор неясно, в чем разница междуset
иsetglobal
есть .источник