Ini file - ChipBooter.cpp
- di proyek saya (Abaikan beberapa detail yang tidak terkait dengan pertanyaan ini):
class ChipBooter {
public:
void Boot() {
this->DpDetect();
}
void DpDetect() {}
}
Ketika saya menekan g<C-]>
untuk melompat ke definisi DpDetect
, Vim menampilkan daftar dengan tag yang cocok duplikat:
# 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()
Ini definisi yang sama!
Masalah ini terjadi setiap kali saya menekan g<C-]>
dan selalu menggandakan panjang daftar.
Keterangan lebih lanjut
Versi riang Ctags: 5.8
. Versi Vim adalah7.3
Berikut ini adalah representasi visual dari hierarki direktori saya:
Source
`---tags
|
`---OMU
`---src
`---boot
`---src
`---ChipBooter.cpp
Saya berlari ctags -R
di Source
mana berisi OMU
direktori untuk menghasilkan tags
file.
Saya meluncurkan vim menggunakan vim -u NONE -N
; .vimrc
dan plugin dinonaktifkan.
Hanya ada satu entri tentang DpDetect
dalam tags
file:
DpDetect OMU/src/boot/src/ChipBooter.cpp /^void ChipBooter::DpDetect()$/;" f class:ChipBooter
tags
adalah nilai default, karena .vimrc
dinonaktifkan.
:set tags?
tags=./tags,./TAGS,tags,TAGS
Memperbarui
@romainl berkata Vim tampaknya menggunakan kedua file tag tersebut : tags
dan TAGS
.
:echo tagfiles()
['tags', 'TAGS']
Jika saya mengubah tags
opsi untuk mengecualikan file TAGS ( :set tags=./tags,tags
), masalah tag duplikat tidak ada.
Di mana TAGS
file itu? Hanya ada tags
file di direktori proyek saya.
$ find {My project root directory} -iname tags
./tags
:echo tagfiles()
?tags
danTAGS
. Apakah Anda memilikiTAGS
file/home/yufeng/mount/svncode/omu/zycp/Source/
? Mungkinkah itu masalah sensitivitas kasus?tags
file dan kemudian memintaTAGS
file. FS peka huruf besar kecil akan menjawab ya untuk kedua pertanyaan, memaksa Vim mencari dua kali dalam file yang sama dengan berpikir ada dua, sedangkan FS peka huruf kecil akan menjawab ya hanya untuk pertanyaan pertama.Jawaban:
Seperti yang dikatakan @romainl, Ini memang masalah sensitivitas huruf FS (sistem file).
File proyek saya dipasang dari Window 7 ke Fedora saya menggunakan:
Dari halaman manual mount.cifs :
Ini berarti bahwa Mount akan menjaga sensitivitas case dari server FS. Jika FS server peka huruf besar kecil, file yang dipasang ini akan peka huruf besar kecil; Jika FS server tidak peka huruf besar kecil, mereka akan peka huruf besar kecil.
Windows 7 adalah case-insensitive, yang membuat file proyek ini case-insensitive.
Jika opsi 'tag' menyertakan tag dan TAG :
Vim akan mencari file tag dua kali: satu untuk tag , yang lain untuk TAGS . Di kedua kali, Vim menemukan bahwa ada satu yang cocok. Ini membuat kesalahan Vim satu file tag yang sama untuk dua file yang berbeda.
Akibatnya, Vim akan menggunakan dua file tag:
Dengan demikian, masalah tag duplikat terjadi.
Jika opsi 'tag' hanya menyertakan tag :
Masalahnya tidak akan ada.
sumber