Aqui está um arquivo - ChipBooter.cpp
- no meu projeto (Omita alguns detalhes que não estão relacionados a esta pergunta):
class ChipBooter {
public:
void Boot() {
this->DpDetect();
}
void DpDetect() {}
}
Quando pressionei g<C-]>
para ir para a definição de DpDetect
, o Vim exibiu uma lista com tags correspondentes duplicadas:
# 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()
Esta é a mesma definição!
Esse problema ocorre toda vez que eu clico g<C-]>
e sempre dobra o comprimento da lista.
Mais detalhes
Versão exuberante Ctags: 5.8
. A versão do Vim é7.3
Aqui está uma representação visual da minha hierarquia de diretórios:
Source
`---tags
|
`---OMU
`---src
`---boot
`---src
`---ChipBooter.cpp
Eu corri ctags -R
em Source
que contém o OMU
diretório para gerar o tags
arquivo.
Eu inicio o vim usando vim -u NONE -N
; .vimrc
e plug-ins está desativado.
Há apenas uma entrada DpDetect
no tags
arquivo:
DpDetect OMU/src/boot/src/ChipBooter.cpp /^void ChipBooter::DpDetect()$/;" f class:ChipBooter
tags
é o valor padrão, porque .vimrc
está desativado.
:set tags?
tags=./tags,./TAGS,tags,TAGS
Atualizar
@romainl disse que o Vim parece estar usando os dois arquivos de tags : tags
e TAGS
.
:echo tagfiles()
['tags', 'TAGS']
Se eu mudar a tags
opção de excluir o arquivo TAGS ( :set tags=./tags,tags
), o problema de tags duplicadas não existe.
Onde está o TAGS
arquivo? Existe apenas um tags
arquivo no diretório do meu projeto.
$ find {My project root directory} -iname tags
./tags
tags
e TAGS
. Você tem um TAGS
arquivo /home/yufeng/mount/svncode/omu/zycp/Source/
? Poderia ser um problema de distinção entre maiúsculas e minúsculas?
tags
arquivos e depois pedindo um TAGS
arquivo. Um FS que diferencia maiúsculas de minúsculas responderia sim a ambas as perguntas, forçando o Vim a procurar duas vezes no mesmo arquivo, pensando que existem duas, enquanto um FS que não diferencia maiúsculas de minúsculas responderia sim apenas à primeira pergunta.
:echo tagfiles()
?