71 votes

Vim: Difficulté à mettre en place des balises. La source dans les sous-répertoires ne voit pas le fichier de balises dans la racine du projet

Je vais essayer d'obtenir le programme d'installation avec (exubérante) ctags sur Vim aujourd'hui et j'ai du mal à la faire fonctionner correctement. - Je générer mon ctags de fichier sur la ligne de commande avec:

cd myproj
ctags -R

Cela met le fichier de tags dans myproj racine. Cependant, Vim ne semble à lire à partir de ce fichier de tags quand je suis en train de travailler sur la source qui se trouvent dans la racine. Comme je l'ai naviguer au plus profond de répertoires, si j'essaie d'accéder à une balise à l'aide de <C-]>, j'obtiens:

E433: No tags file
E426: tag not found: MyClassName

J'ai vérifié que MyClassName a une balise dans le fichier de tags, c'est juste que Vim ne pas le voir. Quelqu'un peut-il m'indiquer comment configurer Vim pour faire référence à la racine du fichier de tags?

Merci.

141voto

Amjith Points 6850
 set tags=tags;/
 

Cela vérifiera le dossier actuel pour le fichier de balises et continuera d’avancer dans un répertoire jusqu’au dossier racine. Donc, vous pouvez être dans n'importe quel sous-dossier de votre projet et il sera capable de trouver les fichiers de balises.

15voto

Xavier T. Points 14049

Il y a une option pour dire Vim où regarder pour la balise de fichier.

J'utilise la configuration suivante:

" search first in current directory then file directory for tag file
set tags=tags,./tags

Extrait de l'aide :

Lorsqu'une balise de nom de fichier commence par "./", le". " est remplacé par le chemin d'accès le fichier actuel. Cela rend possible l'utilisation d'un fichier de tags dans le répertoire lorsque le fichier en cours est (peu importe ce que le répertoire courant est). L'idée de l'aide "./" est que vous pouvez définir la balise de fichier est recherché En premier: le répertoire courant ("balises,./les balises") ou dans le répertoire du fichier en cours ("./les balises,les balises").

Par exemple: :set tags=./les balises,les balises,/home/utilisateur/commontags

Et je garde mon répertoire de travail en cours dans le haut de projet répertoire où mon tagsle fichier est généré.

Utiliser :pwd puis :cd myproj (à l'intérieur de Vim) aller dans le répertoire contenant votre fichier de tags.

Voir :help tags-option pour plus d'informations sur les balises du chemin.

Vous problème est probablement que vous êtes soit dans le mauvais répertoire, ou votre tags option n'est pas correctement configuré.

1voto

ysim Points 673

Si vous générez un fichier de tags pour chaque projet, vous aimerez ce modèle, surtout si vous partagez votre .vimrc entre différentes machines:

let repohome=substitute($REPO_HOME, "\/", "\\\\/", "g")                         
let &tags=substitute(expand("%:p:h"), "\\(".repohome."/.\\{-}\/\\).*", "\\1tags", "")

Il vous faudra alors définir la variable d'environnement $REPO_HOME dans votre .bashrc vos pensions de répertoire sans l'espace de fin (par exemple, /home/<yourusername>/repos), et il recherchera automatiquement un fichier de tags dans chaque sous-répertoire de $REPO_HOME avec une profondeur de 1, par exemple, /home/<yourusername>/repos/myproj/tags.

Prograide.com

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.

Powered by:

X