Vim: feche todas as guias à direita

12

Eu queria saber se existe uma maneira de fechar todas as guias à direita da guia atual. ie

-----|active|-----|-----|------|

e depois, diga:

: tabcright

-----|active

Obrigado! Pedro

droope
fonte

Respostas:

12

Não existem comandos nativos para isso, mas você pode criar seus próprios facilmente usando o script Vim. Aqui está um exemplo básico que permite fechar as guias à direita da guia atual e as guias à esquerda:

function! TabCloseRight(bang)
    let cur=tabpagenr()
    while cur < tabpagenr('$')
        exe 'tabclose' . a:bang . ' ' . (cur + 1)
    endwhile
endfunction

function! TabCloseLeft(bang)
    while tabpagenr() > 1
        exe 'tabclose' . a:bang . ' 1'
    endwhile
endfunction

command! -bang Tabcloseright call TabCloseRight('<bang>')
command! -bang Tabcloseleft call TabCloseLeft('<bang>')
Heptite
fonte
5

Versão ligeiramente melhorada da resposta do davidxk que funciona com várias divisões por guia:

:.+1,$tabdo :tabc
valk
fonte
4

Você pode usar o tabdocomando que permite executar um comando em várias guias.

:.+1,$tabdo :q

Você também pode colocar isso no seu vimrc para não precisar memorizar os detalhes deste comando. Você pode fazer algo como:

command -nargs=0 Tabr :.+1,$tabdo :q
davidxk
fonte