Considere un caso con múltiples divisiones en una ventana. vim permite "maximizar" rápidamente la división actual para ocupar toda la ventana a través de <C-W>
o
.
¿Hay alguna forma de obtener vim para "recordar" las divisiones que existían antes y volver a este estado después de la ejecución <C-W>
o
?
EDITAR: Para aclarar, estoy buscando una manera de hacer esto sin el uso de complementos de terceros.
Respuestas:
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.
fuente
Otra opción podría ser abrir su ventana actual en una pestaña nueva, luego simplemente cierre la pestaña cuando haya terminado.
El comando
:split
(o:sp
para abreviar), sin argumento, tiene el efecto de abrir una nueva división con el mismo búfer que la división actual. El:tab
comando puede ejecutar muchos comandos relacionados con ventanas, cambiándolos para usar una pestaña en su lugar. Combinando estos elementos:tab sp
, se abrirá una nueva pestaña con el búfer actual.Después, puede cerrar la nueva pestaña con
:q
o:tabclose
(:tabc
para abreviar).fuente
Utilizo el complemento ZoomWin ( https://github.com/itspriddle/ZoomWin ) exactamente para este escenario. Al presionar CtrlW, Ouna segunda vez restaura el diseño de la ventana.
fuente
Lo que está describiendo suena exactamente como la característica que se conoce con el nombre de "zoom". Ya hay una gran respuesta en SO que lo hace muy bien.
EDITAR: Respuesta explícita, copiada y pegada de SO . Puse el fragmento a continuación en mi .vimrc y luego invoco
en mi símbolo del sistema vim.
fuente
Esta publicación es antigua, la respuesta aceptada no le preocupa
terminal buffer
.La respuesta aceptada se utiliza
session
para hacer el truco, perosession
no se puede restaurar por completoterminal buffer
:La respuesta de Tommcdo todavía funciona,
<c-w>:tab split
funciona bienterminal buffer
. Se merece un mapa:fuente