Aquí hay un archivo - ChipBooter.cpp
en mi proyecto (omita algunos detalles que no están relacionados con esta pregunta):
class ChipBooter {
public:
void Boot() {
this->DpDetect();
}
void DpDetect() {}
}
Cuando presioné g<C-]>
para saltar a la definición de DpDetect
, Vim mostró una lista con etiquetas coincidentes 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 es la misma definición!
Este problema ocurre cada vez que presiono g<C-]>
y siempre duplica la longitud de la lista.
Más detalles
Versión exuberante Ctags: 5.8
. La versión de Vim es7.3
Aquí hay una representación visual de mi jerarquía de directorios:
Source
`---tags
|
`---OMU
`---src
`---boot
`---src
`---ChipBooter.cpp
Corrí ctags -R
en el Source
que contiene el OMU
directorio para generar el tags
archivo.
Lanzo vim usando vim -u NONE -N
; .vimrc
y los complementos están deshabilitados.
Solo hay una entrada DpDetect
en el tags
archivo:
DpDetect OMU/src/boot/src/ChipBooter.cpp /^void ChipBooter::DpDetect()$/;" f class:ChipBooter
tags
es el valor predeterminado, porque .vimrc
está deshabilitado.
:set tags?
tags=./tags,./TAGS,tags,TAGS
Actualizar
@romainl dijo que Vim parece estar usando ambos archivos de etiquetas : tags
y TAGS
.
:echo tagfiles()
['tags', 'TAGS']
Si cambio la tags
opción para excluir el archivo TAGS ( :set tags=./tags,tags
), el problema de etiquetas duplicadas no existe.
¿Dónde está el TAGS
archivo? Solo hay un tags
archivo en el directorio de mi proyecto.
$ find {My project root directory} -iname tags
./tags
tags
y TAGS
. ¿Tienes un TAGS
archivo /home/yufeng/mount/svncode/omu/zycp/Source/
? ¿Podría ser un problema de mayúsculas y minúsculas?
tags
archivos y luego pidiéndolo TAGS
. Un FS sensible a mayúsculas y minúsculas respondería sí a ambas preguntas, obligando a Vim a buscar dos veces en el mismo archivo pensando que hay dos, mientras que un FS insensible a mayúsculas y minúsculas respondería sí solo a la primera pregunta.
:echo tagfiles()
?