Опция Vim 'autowriteall' только для определенных буферов - PullRequest
1 голос
/ 31 июля 2009

Опция 'autowriteall' позволяет Vim сохранять все буферы при выходе. Я хочу использовать эту опцию только для одного конкретного буфера (временный файл, который скоро будет удален), но не для других буферов.

Как заставить Vim автоматически сохранять изменения только для одного определенного буфера?

Ответы [ 3 ]

1 голос
/ 31 июля 2009

Вам нужно будет использовать комбинацию автокоманд. Непосредственно очевидные релевантные из них:

  • BufHidden
  • BufLeave
  • BufUnload
  • BufDelete

Это будет охватывать скрытие буферов, оставляя их для других буферов или окон, закрытие Vim и удаление буферов. (Я думаю, что BufDelete является избыточным, учитывая BufUnload, но я не совсем уверен, что рассмотрел все случаи). Обратите внимание, что VimLeavePre будет работать только в том случае, если буфер, который вы пытаетесь сохранить, является активным, поэтому это не то, что вам нужно.

Шаблон автокоманды будет

:autocommand {event} {filename} w

Или, если у вас нет простого шаблона для сопоставления имен файлов или он может вообще не иметь его (в этом случае команде w потребуется аргумент имени файла), вы можете использовать автокоманды локального буфера. Вероятно, их нужно будет как-то установить при создании буфера, например, если он создан каким-то скриптом для отображения определенной информации. Для получения информации об этом см .:

:help autocmd-buffer-local

Вы можете получить информацию о множестве событий автокоманд из

:help autocommand-events
1 голос
/ 31 июля 2009

Это не совсем идеально, но одним из вариантов может быть использование autocmd VimLeavePre:

:autocmd VimLeavePre <buffer> w

Однако вам придется выйти с помощью :q! или :qa!, чтобы это сработало, иначе это никогда не дойдет до запуска autocmd.

:help autocmd
:help VimLeavePre
:help autocmd-buffer-local
0 голосов
/ 17 августа 2009

может быть, то, что вы хотите:

setlocal autowriteall

setlocal включает функцию только для указанного буфера. autowriteall - это autowrite + save при выходе, enew, e и других (h autowriteall)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...