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 -Rem Sourceque contém o OMUdiretório para gerar o tagsarquivo.
Eu inicio o vim usando vim -u NONE -N; .vimrce plug-ins está desativado.
Há apenas uma entrada DpDetectno tagsarquivo:
DpDetect OMU/src/boot/src/ChipBooter.cpp /^void ChipBooter::DpDetect()$/;" f class:ChipBooter
tagsé o valor padrão, porque .vimrcestá desativado.
:set tags?
tags=./tags,./TAGS,tags,TAGS
Atualizar
@romainl disse que o Vim parece estar usando os dois arquivos de tags : tagse TAGS.
:echo tagfiles()
['tags', 'TAGS']
Se eu mudar a tagsopção de excluir o arquivo TAGS ( :set tags=./tags,tags), o problema de tags duplicadas não existe.
Onde está o TAGSarquivo? Existe apenas um tagsarquivo no diretório do meu projeto.
$ find {My project root directory} -iname tags
./tags
tagse TAGS. Você tem um TAGSarquivo /home/yufeng/mount/svncode/omu/zycp/Source/? Poderia ser um problema de distinção entre maiúsculas e minúsculas?
tagsarquivos e depois pedindo um TAGSarquivo. 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()?