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 -R
dans Source
lequel contient le OMU
répertoire pour générer le tags
fichier.
Je lance vim en utilisant vim -u NONE -N
; .vimrc
et les plugins sont désactivés.
Il n'y a qu'une seule entrée DpDetect
dans le tags
fichier:
DpDetect OMU/src/boot/src/ChipBooter.cpp /^void ChipBooter::DpDetect()$/;" f class:ChipBooter
tags
est la valeur par défaut, car .vimrc
est désactivé.
:set tags?
tags=./tags,./TAGS,tags,TAGS
Mise à jour
@romainl a déclaré que Vim semble utiliser les deux fichiers de balises : tags
et TAGS
.
:echo tagfiles()
['tags', 'TAGS']
Si je change d' tags
option pour exclure le fichier TAGS ( :set tags=./tags,tags
), le problème des balises en double n'existe pas.
Où est le TAGS
dossier? Il n'y a qu'un tags
fichier dans mon répertoire de projet.
$ find {My project root directory} -iname tags
./tags
tags
et TAGS
. Avez-vous un TAGS
fichier dans /home/yufeng/mount/svncode/omu/zycp/Source/
? Serait-ce un problème de sensibilité à la casse?
tags
fichiers un fichier puis demander un TAGS
fichier. 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()
?