Vim: changer l'étiquette pour un onglet spécifique


19

Disons que j'ai un tas d'onglets ouverts dans Vim, avec une tabline qui ressemble à ceci:

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

Voyez comment deux onglets disent tous les deux "t / file.py"? Ce sont des fichiers différents, ils sont simplement transformés en la même étiquette d'onglet.

Dans mon flux de travail, les titres des onglets sont souvent ambigus (yay pour Chef nommant tout "default.rb") ou inutiles ("Je sais que l'un de ces 8 onglets avec 4 tampons a chacun le fichier que je recherche ...").

Je voudrais renommer les onglets pour indiquer ce qu'ils représentent logiquement:

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

Je suis d'accord avec les onglets par défaut sur une étiquette basée sur le nom de fichier, tant que je suis libre de le changer une fois l'onglet créé.

Comment puis-je faire cela dans Vim?


1
Je n'ai pas le temps d'expérimenter en ce moment, mais voyez :help setting-tabline(pour vim dans un terminal) ou :help setting-guitablabel(pour gvim). Vous pouvez écrire une fonction qui vérifie une variable tab-local et retourne cela ou une valeur par défaut. Puis, après l' ouverture d' un onglet, :let t:mytablabel = 'homepage_template'.
benjifisher

Réponses:


15

Il y a un joli petit plugin appelé Taboo qui rend cela facile. Il suffit de l'installer et vous pouvez ensuite modifier le titre de l'onglet avec:

:TabooRename My Tab Title

Vous pouvez consulter le code source de ce plugin si vous êtes intéressé à écrire votre propre solution.


Tabooest fantastique. TabooResetet TabooRenamebascule littéralement deux "modes" de la tabulation ==> un onglet nommé par Taboo , et un onglet nommé automatiquement par Vim. Cela reproduit parfaitement le " Windows nommé " de Tmux. Mieux encore, les onglets nommés sous Tabou peuvent être restaurés à l'aide de Startify (ou sous tout autre outil d'enregistrement de session).
llinfeng

8

Pour gvim, voir

:help 'guitablabel'
:help setting-guitablabel

Définissez l'option sur une expression évaluée t:mytablabel(une variable tab-local) si elle existe, ou bien sur une chaîne vide (ce qui signifie utiliser la valeur par défaut):

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

Peut-être que c'est déjà trop compliqué, ou peut-être que vous voulez devenir plus chic. Dans ce cas, définissez une fonction:

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

Ensuite, dans n'importe quel onglet où vous souhaitez remplacer la valeur par défaut, faites quelque chose comme

:let t:mytablabel = 'homepage_template'

Si vous utilisez vim dans un terminal, pas gvim, vous devez définir l' 'tabline'option au lieu de 'guitablable'. C'est un peu plus compliqué, car vous avez besoin d'une expression unique qui inclut des étiquettes pour tous les onglets ouverts. Il y a un exemple complet sous

:help setting-tabline
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.