La forma más sencilla de hacer esto es probablemente con archivos de sesión, que son scripts vim (que vim puede producir automáticamente para usted) que restaurarán un entorno de edición anterior.
Puede crear un nuevo archivo de sesión usando :mksession <filename>
. Puede restaurar la sesión mediante la ejecución de la secuencia de comandos de sesión generada, :source <filename>
.
Por lo tanto, puede guardar la sesión actual antes de maximizar una ventana y restaurarla cuando desee "no maximizar" la ventana.
Con esto, puede reasignar los comandos de ventana apropiados para guardar una sesión de antemano y agregar una nueva asignación para "deshacer" el último comando de ventana restaurando la sesión. Por ejemplo:
nnoremap <C-w>o :mksession! ~/session.vim<CR>:wincmd o<CR>
y así sucesivamente para todos los comandos de ventanas que desea admitir (vea :help CTRL-W
, hay muchos). Esto !
evita errores relacionados con la sobrescritura de un archivo de sesión existente.
nnoremap <C-w>u :source ~/session.vim<CR>
para "deshacer" el último comando de ventanas.
Si desea ser particularmente robusto, puede extender esto mediante funciones para guardar los archivos de sesión en una pila y sacarlos para obtener una cadena de deshacer completa, aunque en ese punto probablemente sea más eficiente escribir un montón de funciones para rastrear el historial de comandos de la ventana en la memoria ... en ese momento es probable que esté duplicando los complementos que ya hacen este tipo de cosas.