Вам нужно будет использовать комбинацию автокоманд. Непосредственно очевидные релевантные из них:
BufHidden
BufLeave
BufUnload
BufDelete
Это будет охватывать скрытие буферов, оставляя их для других буферов или окон, закрытие Vim и удаление буферов. (Я думаю, что BufDelete
является избыточным, учитывая BufUnload
, но я не совсем уверен, что рассмотрел все случаи). Обратите внимание, что VimLeavePre
будет работать только в том случае, если буфер, который вы пытаетесь сохранить, является активным, поэтому это не то, что вам нужно.
Шаблон автокоманды будет
:autocommand {event} {filename} w
Или, если у вас нет простого шаблона для сопоставления имен файлов или он может вообще не иметь его (в этом случае команде w
потребуется аргумент имени файла), вы можете использовать автокоманды локального буфера. Вероятно, их нужно будет как-то установить при создании буфера, например, если он создан каким-то скриптом для отображения определенной информации. Для получения информации об этом см .:
:help autocmd-buffer-local
Вы можете получить информацию о множестве событий автокоманд из
:help autocommand-events