Vim: Schließen Sie alle Registerkarten rechts

11

Ich habe mich gefragt, ob es eine Möglichkeit gibt, alle Registerkarten rechts von der aktuellen Registerkarte zu schließen. dh

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

und danach sagen:

: tabcright

-----|active

Vielen Dank! Pedro

droope
quelle

Antworten:

12

Es gibt keine nativen Befehle dafür, aber Sie können Ihre eigenen ziemlich einfach mit dem Vim-Skript erstellen. Hier ist ein grundlegendes Beispiel, mit dem Sie die Registerkarten rechts von der aktuellen Registerkarte und die Registerkarten links schließen können:

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>')
Heptit
quelle
4

Sie können den tabdoBefehl verwenden, mit dem Sie einen Befehl auf einer Reihe von Registerkarten ausführen können.

:.+1,$tabdo :q

Sie können dies auch in Ihr vimrc einfügen, damit Sie sich die Details dieses Befehls nicht merken müssen. Sie können so etwas tun wie:

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

Leicht verbesserte Version der Antwort von davidxk, die mit mehreren Teilungen pro Registerkarte funktioniert:

:.+1,$tabdo :tabc
valk
quelle