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 -R
in Source
dem das OMU
Verzeichnis zum Generieren der tags
Datei enthält.
Ich starte vim mit vim -u NONE -N
; .vimrc
und Plugins ist deaktiviert.
Es gibt nur einen Eintrag DpDetect
in der tags
Datei:
DpDetect OMU/src/boot/src/ChipBooter.cpp /^void ChipBooter::DpDetect()$/;" f class:ChipBooter
tags
ist der Standardwert, da .vimrc
deaktiviert ist.
:set tags?
tags=./tags,./TAGS,tags,TAGS
Aktualisieren
@romainl sagte, Vim scheint beide zwei Tags- Dateien zu verwenden: tags
und TAGS
.
:echo tagfiles()
['tags', 'TAGS']
Wenn ich die tags
Option zum Ausschließen der TAGS- Datei ( :set tags=./tags,tags
) ändere , besteht kein Problem mit doppelten Tags.
Wo ist die TAGS
Datei? tags
In meinem Projektverzeichnis befindet sich nur eine Datei.
$ find {My project root directory} -iname tags
./tags
tags
und TAGS
. Haben Sie eine TAGS
Datei in /home/yufeng/mount/svncode/omu/zycp/Source/
? Könnte es sich um ein Problem mit der Groß- und Kleinschreibung handeln?
tags
Datei fragt und dann nach einer TAGS
Datei. 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()
?