Vim: zmień etykietę dla określonej karty

19

Powiedzmy, że mam kilka kart otwartych w Vimie, a tabulatory wyglądają mniej więcej tak:

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

Zobacz, jak obie karty mówią „t / file.py”? To są różne pliki, po prostu zamieniają się w tę samą etykietę zakładki.

W moim przepływie pracy tytuły kart są często niejednoznaczne (tak dla szefa kuchni nazywającego wszystko „default.rb”) lub nieprzydatne („Wiem, że jedna z tych 8 kart z 4 buforami ma ten plik, którego szukam ...”).

Chciałbym zmienić nazwę kart, aby wskazać, co logicznie reprezentują:

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

Nie mam nic przeciwko, aby karty domyślnie tworzyły etykietę opartą na nazwie pliku, o ile mogę ją zmienić po utworzeniu karty.

Jak mogę to zrobić w Vimie?

spiffytech
źródło
1
Nie mam teraz czasu na eksperymentowanie, ale zobacz :help setting-tabline(dla vima w terminalu) lub :help setting-guitablabel(dla gvima). Możesz napisać funkcję, która sprawdza zmienną lokalną tabulatora i zwraca tę lub inną wartość domyślną. Następnie, po otwarciu zakładki :let t:mytablabel = 'homepage_template'.
benjifisher

Odpowiedzi:

15

Jest ładna mała wtyczka o nazwie Taboo, która ułatwia to. Wystarczy go zainstalować, a następnie możesz zmienić tytuł zakładki za pomocą:

:TabooRename My Tab Title

Możesz zajrzeć do kodu źródłowego tej wtyczki, jeśli chcesz napisać własne rozwiązanie.

Jonathan Potter
źródło
Taboojest fantastyczna. TabooReseti TabooRenamedosłownie przełącza dwa „tryby” Tab-line ==> tabulatora o nazwie Taboo i tabulatora o automatycznej nazwie Vima. To doskonale replikuje „ nazwany Windows ” z Tmux. Co więcej, karty o nazwie Taboo można przywrócić za pomocą Startify (lub dowolnego innego narzędzia do zapisywania sesji).
llinfeng
8

W przypadku gvim patrz

:help 'guitablabel'
:help setting-guitablabel

Ustaw opcję wyrażenia, którego t:mytablabelwynikiem jest (zmienna lokalna tab), jeśli istnieje, lub pusty ciąg znaków (co oznacza użycie wartości domyślnej):

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

Może to już jest zbyt skomplikowane, a może chcesz być bardziej wyszukany. W takim przypadku zdefiniuj funkcję:

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

Następnie w dowolnej zakładce, w której chcesz zastąpić domyślną, zrób coś takiego

:let t:mytablabel = 'homepage_template'

Jeśli używasz vima w terminalu, a nie gvim, musisz ustawić 'tabline'opcję zamiast 'guitablable'. Jest to trochę bardziej skomplikowane, ponieważ potrzebujesz jednego wyrażenia zawierającego etykiety dla wszystkich otwartych kart. Kompletny przykład znajduje się poniżej

:help setting-tabline
benjifisher
źródło