Hier ist eine Datei - ChipBooter.cpp- in meinem Projekt (einige Details weglassen, die nicht mit dieser Frage zusammenhängen):
class ChipBooter {
public:
void Boot() {
this->DpDetect();
}
void DpDetect() {}
}
Als ich drückte g<C-]>, um zur Definition von zu springen DpDetect, zeigte Vim eine Liste mit doppelten übereinstimmenden Tags an:
# 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()
Dies ist die gleiche Definition!
Dieses Problem tritt jedes Mal auf, wenn ich treffe, g<C-]>und verdoppelt immer die Länge der Liste.
Mehr Details
Üppige Ctags-Version : 5.8. Vim-Version ist7.3
Hier ist eine visuelle Darstellung meiner Verzeichnishierarchie:
Source
`---tags
|
`---OMU
`---src
`---boot
`---src
`---ChipBooter.cpp
Ich lief ctags -Rin Sourcedem das OMUVerzeichnis zum Generieren der tagsDatei enthält.
Ich starte vim mit vim -u NONE -N; .vimrcund Plugins ist deaktiviert.
Es gibt nur einen Eintrag DpDetectin der tagsDatei:
DpDetect OMU/src/boot/src/ChipBooter.cpp /^void ChipBooter::DpDetect()$/;" f class:ChipBooter
tagsist der Standardwert, da .vimrcdeaktiviert ist.
:set tags?
tags=./tags,./TAGS,tags,TAGS
Aktualisieren
@romainl sagte, Vim scheint beide zwei Tags- Dateien zu verwenden: tagsund TAGS.
:echo tagfiles()
['tags', 'TAGS']
Wenn ich die tagsOption zum Ausschließen der TAGS- Datei ( :set tags=./tags,tags) ändere , besteht kein Problem mit doppelten Tags.
Wo ist die TAGSDatei? tagsIn meinem Projektverzeichnis befindet sich nur eine Datei.
$ find {My project root directory} -iname tags
./tags
tagsund TAGS. Haben Sie eine TAGSDatei in /home/yufeng/mount/svncode/omu/zycp/Source/? Könnte es sich um ein Problem mit der Groß- und Kleinschreibung handeln?
tagsDatei fragt und dann nach einer TAGSDatei. Ein FS mit Groß- und Kleinschreibung würde beide Fragen mit Ja beantworten und Vim dazu zwingen, zweimal in derselben Datei zu suchen, wobei angenommen wird, dass es zwei gibt, während ein FS ohne Berücksichtigung der Groß- und Kleinschreibung nur die erste Frage mit Ja beantworten würde.
:echo tagfiles()?