Après avoir généré un fichier de balises avec exuberant-ctags
I, je peux passer d'un appel de fonction à sa déclaration, <C-]>
ce qui est assez pratique.
Ma question est de savoir comment le faire dans l'autre sens? Lorsque mon curseur se trouve sur la définition d'une fonction, comment puis-je accéder aux lignes où la fonction est appelée?
Lorsque je regarde le fichier généré par ctags, je ne vois que des informations liées à l'emplacement de la définition et non des appels, cela signifie-t-il que je ne peux pas le faire, que Vim est une solution de contournement intelligente ou que j'ai besoin d'utiliser quelque chose autre chose que exuberant-ctags
?
Réponses:
Vous ne pouvez pas passer aux appels de fonction avec
ctags
. Pour C / C ++ et Java, il existecscope
, et il s'intègre bien avec Vim (voir:help cscope
). Pour d'autres langues, vous pourrez peut-être trouver un outil qui génère / exporte descscope
bases de données compatibles (fihscope
pour Haskell etstarscope
pour Ruby, Go et JavaScript). Vous pouvez également utilisercscope
avec les bases de données mondiales GNU , en pointantcscopeprg
surgtags-cscope
.Sur une note latérale: si vous n'êtes pas découragé par une utilisation parfois déroutante d' Engrish,; ) vous voulez probablement aussi utiliser universal-ctags au lieu de
exuberant-ctags
. Ce dernier n'a pas été mis à jour depuis des années. Le premier est une fourche activement entretenue.la source
cscope
lui-même prend en charge C / C ++, Lex et Yacc. La prise en charge de Java est marginalement utile. Vous pouvez obtenir un support pour (à l'ancienne) PHP et JavaScript depuis GNUglobal
, via l'gtags-cscope
utilitaire. Et, comme je l'ai dit ci-dessus, il existe d'autres indexeurs qui peuvent exporter descscope
bases de données compatibles.Vous ne pouvez pas faire ça avec ctags.
Essayez une alternative plus puissante comme cscope (qui a même sa propre section d'aide :)
:help cscope
ou globale .la source
cscope
lui - même ne prend en charge ni PHP, ni JavaScript. Vous pouvez cependant indexer des fichiers PHP et JavaScript avec GNUglobal
, puis exécutergtags-cscope
pour utiliser legtags
fichier résultant aveccscope
.cscope
les sources de au lieu de spéculer sur la base d'expériences rapides.cscope
a un analyseur C plutôt détendu. C'est tout ce qu'il a et tout ce qu'il fait. Avec cet analyseur, il "supporte" beaucoup de langues, pour des valeurs appropriées de "support". Les constructions sont reconnues tant qu'elles ressemblent plus ou moins à C. C'est pourquoi les classes Java fi et les nouvelles constructions PHP ne sont pas reconnues. Comparez fi avec starscope , ce qui permet en fait d'ajouter de nouvelles langues.Vous pouvez utiliser la commande grep de Vim pour rechercher tous les fichiers de votre projet:
Mettons cela dans un raccourci clavier:
Je trouve cette recherche clé à l'échelle du projet inestimable lorsque j'explore une grande base de code inconnue.
\<
et\>
sont des séquences d'expression rationnelle qui indiquent le début et la fin d'un mot, de sorte que vous n'obtiendrez pas de correspondances partielles. (L'-w
option de grep pourrait être un autre moyen d'y parvenir.)Cependant, il s'agit d'une recherche peu intelligente , elle peut donc produire des faux positifs si le même mot apparaît dans des contextes non liés.
À vrai dire, j'utilise à la place ma propre version modifiée du plugin grep.vim . C'est un peu plus convivial à utiliser:
src/ lib/
au lieu de.
) et se souvient des modifications.\b
doit être utilisé à la place de\<
et\>
.Je le configure et j'exclus certains fichiers standard comme celui-ci .
Pour un accès rapide, je crée deux raccourcis clavier . F3me permet de modifier la ligne de commande, F4utilise la ligne de commande précédemment configurée sans aucune touche supplémentaire. Le mécanisme est assez moche et pourrait utiliser un peu de nettoyage, mais il m'a bien servi.
la source