A veces necesito mover ventanas a una pestaña ya existente, y me preguntaba si había un atajo de comando / teclado que pudiera hacer esto. Sé que puedo cerrar la ventana, cambiar a la pestaña y luego abrirla en una nueva división, pero me preguntaba si había una forma más corta de lograr esto. Tenga en cuenta que quiero moverlo a una pestaña existente , no a una pestaña nueva como lo <C-w>T
hace.
vim-windows
tabbed-user-interface
Árbol de hoja perenne
fuente
fuente
Respuestas:
Aunque hay comandos para mover las ventanas existentes en la página de la pestaña actual (es decir, afectar el diseño de la ventana al girar, cambiar el tamaño y mover), no hay comandos para mover una ventana a otra pestaña.
Como una ventana es solo una ventana gráfica en un búfer cargado, debe:
:close!
la ventana.:sbuffer
el número de búfer para volver a abrirlo.Perderá cualquier opción específica de la ventana por esto. También puede guardarlos y restaurarlos en un script.
fuente
:b ab
(pestaña-completa el resto)ab
son solo letras aleatorias, reemplácelas con el comienzo del nombre de archivo deseado.:b
La finalización de tabulación ha funcionado muy bien para mí, por lo general puede encontrar el búfer de origen correcto basado en solo una letra y 1-2Tab
pulsaciones de teclas.El beneficio de este enfoque sobre el de Ingo es la falta de notar o recordar algo, lo que significa menos carga cognitiva. Nombre de archivo que ya sabes de todos modos.
fuente
Los dos comandos definidos a continuación mueven todos los búferes de la pestaña de la derecha a la pestaña actual y luego cierran la pestaña de la derecha.
Mtabsp
los mueve dividiéndolos horizontalmente y losMtabvsp
divide verticalmente. Debe mover la pestaña combinada antes de usar los comandos. Uso+tabm
,-tabm
o<n>tabm
.Preparar
Agregue el siguiente script vim a su
vimrc
:Detalles técnicos
La función Mtab recibe un parámetro
vert
. Determina si la pestaña actual se divide horizontal o verticalmente.El resultado deseado se logra con los siguientes pasos:
Si nuestra pestaña actual es la última, los comandos se ignoran.
fuente
Si se trata de un archivo de memoria intermedia (no va a trabajar para rascar tampones, etc.), se puede:
:let @f=@%
ENTER - en la ventana de origen;:echo @f
:e␣
Ctrl-RfENTERNota importante: ¡ el paso final no funcionará correctamente si la ruta contiene espacios o algunos caracteres especiales! :-( Como solución alternativa, el siguiente comando, un poco más largo, debería funcionar para rutas con espacios (aunque aún puede fallar para algunos otros caracteres especiales):
:e␣"
Ctrl-Rf"
ENTER(es decir, citando el resultado de Ctrl-R, f )
Inspirado por las respuestas de lkraav e ingo-karkat .
fuente