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 -R
in Source
che contiene la OMU
directory per generare il tags
file.
Lancio vim usando vim -u NONE -N
; .vimrc
e i plugin sono disabilitati.
C'è solo una voce DpDetect
nel tags
file:
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 : tags
e TAGS
.
:echo tagfiles()
['tags', 'TAGS']
Se cambio tags
opzione per escludere il file TAGS ( :set tags=./tags,tags
), il problema con i tag duplicati non esiste.
Dov'è il TAGS
file? C'è solo un tags
file nella directory del mio progetto.
$ find {My project root directory} -iname tags
./tags
tags
e TAGS
. Hai un TAGS
file in /home/yufeng/mount/svncode/omu/zycp/Source/
? Potrebbe essere un problema di distinzione tra maiuscole e minuscole?
tags
e poi chiedendo un TAGS
file. 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()
?