J'ai le problème que ctags dans vim / gvim m'amène souvent à une déclaration directe au lieu de la définition réelle de la fonction.
Une façon de contourner cela?
J'ai le problème que ctags dans vim / gvim m'amène souvent à une déclaration directe au lieu de la définition réelle de la fonction.
Une façon de contourner cela?
Je suis un peu en retard avec cette réponse, mais je pense que le moyen le plus simple est d'utiliser "g ctrl-]" au lieu de "ctrl-]". S'il n'y a qu'un seul match, il vous y mènera. S'il y a plusieurs correspondances, il les listera toutes, vous permettant de choisir celle que vous voulez, tout comme: tselect. Le meilleur des deux mondes. :)
Vous devriez pouvoir utiliser tn
et tp
pour passer aux différentes balises correspondantes.
^]
pour vous amener au premier match. :tn
pour passer à la suivante. :tn
trop de fois, vous pouvez taper :tp
pour revenir à la précédente. Je crois que Vim va à la première balise dans le fichier de tags par défaut. Vous pouvez choisir un autre si vous préférez: utiliser :tj
(similaire à :tselect, mais auto-saut si il n'y a qu'un seul match) ou Ctrl-]
suivie par :tn
).
Le seul moyen de changer la valeur par défaut est de changer l'ordre des balises de fichiers, mais je ne crois pas ctags offre une option de ligne de commande pour ce faire.
Ce n'est pas aussi difficile que cela sonne comme vous avez essentiellement besoin d'un script qui ouvre le fichier de tags, les trie par le 'genre' de la balise et l'écrit de nouveau. Le 'genre' dans le tag est un caractère unique décrivant si c'est une fonction (f), un prototype de fonction (p), une macro, un énumérés nom etc etc etc. Si vous êtes sous Linux, il pourrait, en théorie, être aussi simple que:
#!/bin/sh
ctags -R -f - . | tac > tags
Depuis tac
inverse l'ordre des lignes dans un fichier, ce sera automatiquement mis à la définition. Cependant, cela devient un peu plus compliqué, car l'en-tête doit être maintenue et Vim préfère le fichier de balises pour être triés, il est donc préférable de passer par le fichier et le tri sur la première entrée (le nom de la balise) en marche avant et puis la nature dans l'ordre inverse. Donc, quelque chose de plus compliqué peut-être mieux.
Je m'excuse pour le plug sans vergogne, mais j'ai écrit un plugin Vim que (indirectement) fait ce que vous avez besoin. Il est prévu pour l'ajout de beaucoup plus d'mettant en évidence des groupes pour des choses comme les noms de fonctions, macros, les énumérations, etc. Cependant, l'une des autres choses que ce n'est re-trier le fichier de balises, de sorte que la fonction de mise en œuvre vient avant la déclaration de la fonction, par conséquent, d'atteindre ce que vous voulez (j'ai eu le même besoin que vous). Si vous ne voulez pas de mettre en évidence les fonctionnalités, vous pourriez probablement bande tout assez facilement: c'est assez simple programme en python et un moyen encore plus simple script Vim et est disponible à partir de mon site.
Cette option a mieux fonctionné pour moi
Mettez la ligne suivante dans votre .vimrc et maintenant vous pouvez utiliser le double clic de la souris (sur le variable/entry
dans votre fichier) pour sauter à l'emplacement marqué. Si une seule correspondance est trouvée, elle sautera immédiatement. Si plusieurs entrées sont des correspondances, il demandera une entrée utilisateur.
:map <2-LeftMouse> g< c-]>
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.