Самый простой способ сделать это, вероятно, с помощью файлов сеансов, которые представляют собой сценарии vim (которые vim может автоматически создать для вас), которые восстановят предыдущую среду редактирования.
Вы можете создать новый файл сессии, используя :mksession <filename>
. Вы можете восстановить этот сеанс, выполнив сгенерированный скрипт сеанса :source <filename>
.
Таким образом, вы можете сохранить текущий сеанс до максимизации окна и восстановить его, когда вы хотите «развернуть» окно.
Используя это, вы можете переназначить соответствующие команды управления окнами, чтобы заранее сохранить сеанс, и добавить новое сопоставление для одного, чтобы «отменить» последнюю команду управления окнами, восстановив сеанс. Например:
nnoremap <C-w>o :mksession! ~/session.vim<CR>:wincmd o<CR>
и так далее для всех оконных команд, которые вы хотите поддерживать (видите :help CTRL-W
, их много). В !
позволяет предотвратить ошибки , связанные с перезаписью существующего файла сеанса.
nnoremap <C-w>u :source ~/session.vim<CR>
"отменить" последнюю команду управления окнами.
Если вы хотите быть особенно надежным, вы можете расширить это с помощью функций, чтобы сохранить файлы сессий в стеке и извлечь их, чтобы получить полную цепочку отмены, хотя в этот момент, вероятно, более эффективно написать набор функций для отслеживания история команд окна в памяти ... в этот момент вы, вероятно, дублируете плагины, которые уже делают подобные вещи.