ここにファイルがあります-- ChipBooter.cpp私のプロジェクトで(この質問に関連していないいくつかの詳細を省略してください):
class ChipBooter {
public:
void Boot() {
this->DpDetect();
}
void DpDetect() {}
}
ヒットg<C-]>しての定義にジャンプするとDpDetect、Vimは一致するタグが重複するリストを表示しました。
# 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()
これは同じ定義です!
この問題は、ヒットするたびに発生しg<C-]>、常にリストの長さが2倍になります。
もっと詳しく
あふれんばかりのCtagsバージョン:5.8。Vimのバージョンは7.3
これは私のディレクトリ階層の視覚的表現です:
Source
`---tags
|
`---OMU
`---src
`---boot
`---src
`---ChipBooter.cpp
私はファイルを生成するためのディレクトリを含んで実行しctags -RましSourceた。OMUtags
を使用してvimを起動しvim -u NONE -Nます。.vimrcプラグインが無効になっています。
ファイルDpDetectには約1つのエントリしかありませんtags。
DpDetect OMU/src/boot/src/ChipBooter.cpp /^void ChipBooter::DpDetect()$/;" f class:ChipBooter
tagsは.vimrc無効になっているため、デフォルト値です。
:set tags?
tags=./tags,./TAGS,tags,TAGS
更新
@romainlは、Vimは2つのタグファイルを使用しているようです:tagsとTAGS。
:echo tagfiles()
['tags', 'TAGS']
TAGSファイル()tagsを除外するオプションを変更した場合、重複タグの問題は発生しません。:set tags=./tags,tags
TAGSファイルはどこにありますか?tagsプロジェクトディレクトリにはファイルしかありません。
$ find {My project root directory} -iname tags
./tags
tagsとTAGS。にTAGSファイルはあり/home/yufeng/mount/svncode/omu/zycp/Source/ますか?大文字と小文字を区別する問題でしょうか?
tagsを求め、そのファイルとTAGSファイル。大文字と小文字を区別するFSは両方の質問にyesと答え、Vimは2つあると考えて同じファイルを2回検索しますが、大文字と小文字を区別しないFSは最初の質問にのみyesと答えます。
:echo tagfiles()何ですか?