Vim: Bezeichnung für bestimmte Registerkarte ändern

19

Angenommen, ich habe eine Reihe von Registerkarten in Vim geöffnet, die in etwa so aussehen:

1 v/file1.py 2 t/file.py 1 t/file.py 1 o/otherfile.py

Sehen Sie, wie auf zwei Registerkarten "t / file.py" steht? Das sind verschiedene Dateien, sie werden einfach in die gleiche Tab-Bezeichnung umgewandelt.

In meinem Workflow sind die Registerkartentitel häufig mehrdeutig (yay for Chef, der alles "default.rb" nennt ) oder nicht hilfreich ("Ich weiß, dass eine dieser 8 Registerkarten mit jeweils 4 Puffern die gesuchte Datei enthält ...").

Ich möchte die Registerkarten umbenennen, um anzuzeigen, was sie logisch darstellen:

1 homepage_view 2 tests 1 homepage_template 1 o/otherfile.py

Ich bin in Ordnung mit Tabs, die standardmäßig auf Dateinamen basieren, solange ich sie ändern kann, sobald der Tab erstellt ist.

Wie kann ich das in Vim machen?

spiffytech
quelle
1
Ich habe momentan keine Zeit zum Experimentieren, aber siehe :help setting-tabline(für vim in einem Terminal) oder :help setting-guitablabel(für gvim). Sie könnten eine Funktion schreiben, die nach einer tabulatorlokalen Variablen sucht und entweder diese oder eine Standardvariable zurückgibt. Nachdem Sie einen Tab geöffnet haben, klicken Sie auf :let t:mytablabel = 'homepage_template'.
Benjamin

Antworten:

15

Es gibt ein nettes kleines Plugin namens Taboo , das dies einfach macht. Einfach installieren und dann können Sie den Tab-Titel ändern mit:

:TabooRename My Tab Title

Sie können sich den Quellcode für dieses Plugin ansehen, wenn Sie daran interessiert sind, Ihre eigene Lösung zu schreiben.

Jonathan Potter
quelle
Tabooist fantastisch. TabooResetund TabooRenameschaltet buchstäblich zwei "Modi" der Tab-Zeile um ==> ein benannter Tab von Taboo und ein automatisch benannter Tab von Vim. Dies repliziert das " named Windows " von Tmux perfekt. Besser noch, Registerkarten, die unter "Tabu" genannt werden, können mit " Startify" (oder einem anderen sitzungsspeichernden Tool) wiederhergestellt werden .
30.
8

Für gvim siehe

:help 'guitablabel'
:help setting-guitablabel

Setzen Sie die Option auf einen Ausdruck t:mytablabel(eine tabulatorlokale Variable), falls vorhanden, oder auf eine leere Zeichenfolge (dh die Standardeinstellung verwenden):

:set guitablabel=%{exists('t:mytablabel')?t:mytablabel\ :''}

Vielleicht ist das schon zu kompliziert, oder vielleicht möchten Sie schicker werden. In diesem Fall definieren Sie eine Funktion:

function! GuiTabLabel()
  return exists('t:mytablabel') ? t:mytablabel : ''
endfunction
:set guitablabel=%{GuiTabLabel()}
:set go+=e

Führen Sie dann in einer beliebigen Registerkarte, in der Sie die Standardeinstellung überschreiben möchten, Folgendes aus:

:let t:mytablabel = 'homepage_template'

Wenn Sie vim in einem Terminal verwenden, nicht gvim, müssen Sie die 'tabline'Option anstelle von festlegen 'guitablable'. Dies ist etwas komplizierter, da Sie einen einzelnen Ausdruck benötigen, der Beschriftungen für alle geöffneten Registerkarten enthält. Es gibt ein vollständiges Beispiel unter

:help setting-tabline
benjifisher
quelle