Voici un fichier - ChipBooter.cpp- dans mon projet (Omettez quelques détails qui ne sont pas liés à cette question):
class ChipBooter {
public:
void Boot() {
this->DpDetect();
}
void DpDetect() {}
}
Lorsque j'ai appuyé g<C-]>pour passer à la définition de DpDetect, Vim a affiché une liste avec des balises correspondantes en double:
# pri kind tag file
1 F C f DpDetect OMU/src/boot/src/ChipBooter.cpp
class:ChipBooter
void ChipBooter::DpDetect()
2 F C f DpDetect OMU/src/boot/src/ChipBooter.cpp
class:ChipBooter
void ChipBooter::DpDetect()
C'est la même définition!
Ce problème se produit chaque fois que je frappe g<C-]>et double toujours la longueur de la liste.
Plus de détails
Version Exubérant Ctags: 5.8. La version Vim est7.3
Voici une représentation visuelle de ma hiérarchie de répertoires:
Source
`---tags
|
`---OMU
`---src
`---boot
`---src
`---ChipBooter.cpp
J'ai couru ctags -Rdans Sourcelequel contient le OMUrépertoire pour générer le tagsfichier.
Je lance vim en utilisant vim -u NONE -N; .vimrcet les plugins sont désactivés.
Il n'y a qu'une seule entrée DpDetectdans le tagsfichier:
DpDetect OMU/src/boot/src/ChipBooter.cpp /^void ChipBooter::DpDetect()$/;" f class:ChipBooter
tagsest la valeur par défaut, car .vimrcest désactivé.
:set tags?
tags=./tags,./TAGS,tags,TAGS
Mise à jour
@romainl a déclaré que Vim semble utiliser les deux fichiers de balises : tagset TAGS.
:echo tagfiles()
['tags', 'TAGS']
Si je change d' tagsoption pour exclure le fichier TAGS ( :set tags=./tags,tags), le problème des balises en double n'existe pas.
Où est le TAGSdossier? Il n'y a qu'un tagsfichier dans mon répertoire de projet.
$ find {My project root directory} -iname tags
./tags
tagset TAGS. Avez-vous un TAGSfichier dans /home/yufeng/mount/svncode/omu/zycp/Source/? Serait-ce un problème de sensibilité à la casse?
tagsfichiers un fichier puis demander un TAGSfichier. Un FS sensible à la casse répondrait oui aux deux questions, forçant Vim à rechercher deux fois dans le même fichier en pensant qu'il y en a deux, tandis qu'un FS insensible à la casse répondrait oui uniquement à la première question.
:echo tagfiles()?