Vim может сделать это, хотя это может быть немного неуклюже и потребует некоторой настройки.
romainl получает вас на полпути с session. Недостающие биты файлы подкачки, :preserve, и &флаг для cpoptions.
Файлы подкачки предназначены для восстановления в случае сбоя Vim или вашей системы. Они позволяют восстановить любые несохраненные изменения (с некоторыми ограничениями, см :he swap-file). Однако, когда Vim завершает работу нормально, он удаляет все файлы подкачки, которые он использовал, даже если в буфере были несохраненные изменения.
Вот где :preserveи cpoptions«s &приходят. :preserveСилы Vim писать все буферы их файлы подкачки немедленно (в отличие от стандарта через 4 секунды или 200 символов, или что ваши варианты установили его в). Выполнение :set cpoptions+=&указывает Vim не удалять файлы подкачки, сохраненные :preserveпри обычном выходе.
К сожалению, Vim не выполняет автоматическую очистку файлов подкачки при их восстановлении, поэтому вскоре вы можете получить каталог, похожий на этот:
.foo.txt.swn
.foo.txt.swo
.foo.txt.swp
foo.txt
Вы можете удалять старые из них вручную, но Vim будет только автоматически предложит восстановить , если есть *.swpфайл , в котором было бы поместить новый файл подкачки. :recoverКоманда заставит Vim искать файлы подкачки для восстановления.
Используя автокоманды, вы можете автоматизировать сохранение (возможно, с QuitPreсобытием) и восстановление (возможно, с помощью BufReadили BufReadPost). Recover.vim - это плагин, который может работать как более дружественная альтернатива для управления восстановлением. Похоже, также обрабатывать очистку файлов подкачки. Я не уверен, как он справится с каталогом, .swoно без .swpфайла. Возможно, вам все еще придется использовать :recoverдля этого случая.
vim-obsession - еще один плагин, который утверждает, что делает обработку сессий намного проще.