Vim et Ctags: ignorer certains fichiers lors de la génération de balises

J'ai un dossier llvm2.9, dans lequel j'ai exécuté cette commande.

$> ctags -R --sort=1 --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++

C'était des méthodes d'indexation dans *.fichiers html également présents dans llvm2. 9 / docs. J'ai découvert cela parce que quand j'ai appuyé sur ctrl -] pour une classe, il est allé au fichier html.

Comment puis-je forcer ctags à utiliser .rpc/.h fichiers seuls ou ignorer un répertoire particulier.

Merci

23
demandé sur excray 2011-10-12 11:33:24

4 réponses

Vous pouvez exclure un type de fichier en utilisant --exclude=*.html

21
répondu skeept 2011-10-12 15:00:07

Si vous devez exclure plus que juste .fichiers html:

Vous ne pouvez pas séparer une liste par des virgules dans une option d'exclusion. Cela ne fonctionne pas:

ctags --exclude=*.html,*.js ./*

Cependant, vous pouvez passer plusieurs options d'exclusion:

ctags --exclude=*.html --exclude=*.js ./*

Passez l'option-V pour aider au débogage:

ctags -V --exclude=*.html --exclude=*.js ./*

Donne la sortie:

Reading initial options from command line
  Option: --exclude=*.html
    adding exclude pattern: *.html
  Option: --exclude=*.js
    adding exclude pattern: *.js
15
répondu eupharis 2013-09-17 18:39:14

Le moyen le plus simple dans vim serait

 :!ctags {.,**}/*.{cpp,h}

Explication: Les accolades étendre à

:!ctags ./*.cpp **/*.cpp **/*.h **/*.h 

Il recherche donc les fichiers source ou d'en-tête dans le répertoire courant (./) ou tout répertoire imbriqué (**/). Note **/ ne correspond pas au répertoire courant (il correspond toujours à au moins 1 niveau de sous-répertoire)

Dans le shell:

 find -iname '*.cpp' -o '*.h' -print0 | xargs -0 ctags

explication : ceci trouve récursivement tout .rpc et .h fichiers sous le courant et les transmet à ctags sur la ligne de commande.

La façon dont print0 et -0 fonctionnent ensemble est de s'assurer qu'il fonctionne correctement avec des noms de fichiers étranges (par exemple contenant des espaces ou même de nouveaux caractères de ligne)

Je vais laisser le reste des options ctags pour votre propre imagination:)

PS. Pour les bash-es récents, vous pouvez utiliser

 shopt -s globstar
 ctags {.,**}/*.{cpp,h}

Et obtenez à peu près le même comportement que dans vim !

3
répondu sehe 2016-03-07 07:20:02

Je ne voulais pas traquer tous les types de fichiers qui pourraient être traités dans un grand projet, et je ne m'intéressais qu'à Python, donc je ne traitais explicitement que les fichiers python en utilisant ctags --languages=Python .... La liste des noms de langue peut être vue en utilisant ctags --list-languages.

2
répondu Ben 2016-08-25 15:56:47