vim: Ouvrir la balise dans un nouvel onglet

Existe-t-il un plugin ou un script pour ouvrir les entrées ctags dans un nouvel onglet? Je voudrais placer mon curseur sur une fonction, appuyer sur ctrl +] et ouvrir l’entrée dans un autre onglet. J’aimerais aussi que je sélectionne visuellement une entrée, pour que ctrl +] fonctionne toujours et s’ouvre dans un nouvel onglet vim.

    Vous pouvez

    Cw C-] Cw T

    Pour atteindre cet effet

    Ensuite, vous pouvez également cartographier cela:

     :nnoremap  T 

    Edit: aussi, en fonction de ce que vous voulez réellement, n’oubliez pas que vous pouvez ouvrir les balises dans preview ( :ptag ) avec par exemple Cw } . Il suffit de le mentionner au cas où …

    Voici deux jolis mappages ad-hoc (si vos tags sont générés par ctags ):

     nnoremap  :tabnew %g vnoremap  :tabnew %gvg 

    D’abord, nous ouvrons le tampon actuel dans un nouvel onglet; alors nous essayons de sauter à une balise sous le curseur ( g , qui est égal à :tjump , saute directement à la balise s’il n’y a qu’une seule correspondance, ou fournit une liste de correspondances s’il y en a plusieurs).

    Avantages:

    • ” fonctionne sur ma machine ” ©

    Les inconvénients:

    • si vous quittez la liste des correspondances sans en choisir aucune, l’onglet nouvellement créé restra ouvert
    • il en va de même s’il n’y a pas de correspondance du tout

    PS Pouvez-vous fournir un cas d’utilisation pour le mappage en mode visuel?

    PPS Si vous générez des tags avec cscope (ce qui est mieux que ctags ) et utilisez ses mappages vim , remplacez les mappages ci-dessus par les suivants:

     nnoremap  :tabnew % vnoremap  tabnew %gv 

    Si quelqu’un cherche encore une solution. Sur cette solution, si aucune balise n’est trouvée, il n’y aura plus d’onglet vide.

     function! w:GoToTag(tagWord) let l:tagfile = &tags :tabe execute 'set tags=' . l:tagfile execute ':silent tjump ' . a:tagWord let l:tagFilename = expand('%:t') if l:tagFilename == '' :tabclose :tabprevious endif endfunction