Найпростіший спосіб зробити це, мабуть, з файлами сеансу, які є сценаріями 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>
щоб "скасувати" останню команду вікна.
Якщо ви хочете бути особливо надійними, ви можете розширити це за допомогою функцій, щоб зберегти файли сеансу в стек і випустити їх, щоб отримати повний ланцюжок скасування, хоча в цей момент, мабуть, більш ефективно написати купу функцій для відстеження історія команд вікна в пам'яті ... в цей момент ви, ймовірно, дублюєте плагіни, які вже роблять подібні речі.