Vim: zamknij wszystkie karty po prawej stronie

12

Zastanawiałem się, czy istnieje sposób zamknięcia wszystkich kart po prawej stronie bieżącej karty. to znaczy

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

a potem powiedz:

: tabcright

-----|active

Dzięki! Pedro

opadanie
źródło

Odpowiedzi:

12

Nie istnieją żadne natywne polecenia do tego, ale możesz dość łatwo stworzyć własne, używając skryptu Vima. Oto podstawowy przykład, który pozwala zamykać karty po prawej stronie bieżącej karty oraz karty po lewej:

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>')
Heptyt
źródło
5

Nieznacznie ulepszona wersja odpowiedzi davidxk, która działa z wieloma podziałami na kartę:

:.+1,$tabdo :tabc
łoś
źródło
4

Możesz użyć tabdopolecenia, które pozwala uruchomić polecenie na wielu kartach.

:.+1,$tabdo :q

Możesz również umieścić to w swoim vimrc, abyś nie musiał zapamiętywać szczegółów tego polecenia. Możesz zrobić coś takiego:

command -nargs=0 Tabr :.+1,$tabdo :q
davidxk
źródło