Ecco un file - ChipBooter.cpp- nel mio progetto (ometti alcuni dettagli che non sono correlati a questa domanda):
class ChipBooter {
public:
void Boot() {
this->DpDetect();
}
void DpDetect() {}
}
Quando premo g<C-]>per passare alla definizione di DpDetect, Vim visualizza un elenco con tag di corrispondenza duplicati:
# 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()
Questa è la stessa definizione!
Questo problema si verifica ogni volta che premo g<C-]>e raddoppia sempre la lunghezza dell'elenco.
Più dettagli
Versione Esuberante Ctags: 5.8. La versione di Vim è7.3
Ecco una rappresentazione visiva della mia gerarchia di directory:
Source
`---tags
|
`---OMU
`---src
`---boot
`---src
`---ChipBooter.cpp
Mi sono imbattuto ctags -Rin Sourceche contiene la OMUdirectory per generare il tagsfile.
Lancio vim usando vim -u NONE -N; .vimrce i plugin sono disabilitati.
C'è solo una voce DpDetectnel tagsfile:
DpDetect OMU/src/boot/src/ChipBooter.cpp /^void ChipBooter::DpDetect()$/;" f class:ChipBooter
tagsè il valore predefinito, perché .vimrcè disabilitato.
:set tags?
tags=./tags,./TAGS,tags,TAGS
Aggiornare
@romainl ha detto che Vim sembra utilizzare entrambi i due file tag : tagse TAGS.
:echo tagfiles()
['tags', 'TAGS']
Se cambio tagsopzione per escludere il file TAGS ( :set tags=./tags,tags), il problema con i tag duplicati non esiste.
Dov'è il TAGSfile? C'è solo un tagsfile nella directory del mio progetto.
$ find {My project root directory} -iname tags
./tags
tagse TAGS. Hai un TAGSfile in /home/yufeng/mount/svncode/omu/zycp/Source/? Potrebbe essere un problema di distinzione tra maiuscole e minuscole?
tagse poi chiedendo un TAGSfile. Un FS con distinzione tra maiuscole e minuscole risponderebbe di sì a entrambe le domande, costringendo Vim a cercare due volte nello stesso file pensando che ce ne siano due, mentre un FS senza distinzione tra maiuscole e minuscole risponderebbe di sì solo alla prima domanda.
:echo tagfiles()?