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 los Mtabvsp
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
:
function! Mtab(vert)
if tabpagenr() == tabpagenr("$")
return 0
endif
+tabnext
let s:killed_tab = tabpagenr()
let s:buf_list = tabpagebuflist()
-tabnext
for item in s:buf_list
if a:vert
vsp
else
sp
endif
execute "buf " . item
endfor
execute "tabclose " . s:killed_tab
endfunction
command! Mtabsp call Mtab(0)
command! Mtabvsp call Mtab(1)
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:
- Pasamos a la siguiente pestaña temporalmente
- Use dos variables para hacer referencia a su número de tabulación y a sus buffers
- Regresar a la pestaña actual
- Dividimos la pestaña y abrimos cada búfer
- Finalmente, cerramos la pestaña de la derecha
Si nuestra pestaña actual es la última, los comandos se ignoran.