Os dois comandos definidos abaixo movem todos os buffers da guia à direita para a guia atual e feche a guia à direita. Mtabsp
move-os dividindo horizontalmente e Mtabvsp
divididos verticalmente. Você precisa mover a guia mesclada antes de usar os comandos. Use +tabm
, -tabm
ou <n>tabm
.
Configuração
Adicione o script vim abaixo ao seu 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)
Detalhes técnicos
A função Mtab recebe um parâmetro vert
. Determina se a guia atual é dividida horizontal ou verticalmente.
O resultado desejado é alcançado com as seguintes etapas:
- Passamos para a próxima guia temporariamente
- Use duas variáveis para referenciar seu número de guia e buffers
- Retornar para a guia atual
- Dividimos a guia e abrimos cada buffer
- Por fim, fechamos a guia à direita
Se nossa guia atual for a última, os comandos serão ignorados.