Есть ли плагин vim, который реализует функцию горячего выхода из возвышенного текста

11

Горячий выход - одна из убойных функций редактора Sublime Text. Это позволяет закрыть редактор в любой момент, не беспокоясь об изменениях в открытых файлах - он просто закрывается без вопросов. При повторном запуске ST все открытые и отредактированные файлы будут в том же состоянии, в каком они были до закрытия

Интересно, есть ли способ сделать то же самое в VIM?

LazyS
источник
: xa выйти из всех (сохранить все изменения и закрыть Vim)
Sim
Это записывает файлы, но больше ничего не сохраняет. Я думаю, что ОП хочет что-то, что одновременно сохраняет файлы без их записи и сохраняет состояние любых открытых вкладок или буферов
EvergreenTree
Да, я понял это позже из его комментариев.
Сим

Ответы:

6

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 - еще один плагин, который утверждает, что делает обработку сессий намного проще.

8bittree
источник
1

Да. Это называется «сессия», и вы можете прочитать все об этом в:

:help session
romainl
источник
1
Я в курсе сессий. Но, похоже, это не то же самое - он сохраняет все открытые буферы и вкладки (и настройки), но если у вас есть какие-то изменения в одном из буферов, вы должны записать их на диск перед выходом. В возвышенном тексте вам не нужно сохранять открытый файл при выходе - Sublime сохраняет все изменения в нем в отдельном месте и восстанавливает их при повторном открытии. Таким образом, оригинальный файл не тронут на диске, но изменения также не потеряны
LazyS
Да, это было бы основным отличием. Не знаю, можно ли это сделать каким-либо образом, не прибегая к tmux / screen / detach.
Ромен