Aquí hay un archivo - ChipBooter.cppen 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 -Ren el Sourceque contiene el OMUdirectorio para generar el tagsarchivo.
Lanzo vim usando vim -u NONE -N; .vimrcy los complementos están deshabilitados.
Solo hay una entrada DpDetecten el tagsarchivo:
DpDetect OMU/src/boot/src/ChipBooter.cpp /^void ChipBooter::DpDetect()$/;" f class:ChipBooter
tagses el valor predeterminado, porque .vimrcestá deshabilitado.
:set tags?
tags=./tags,./TAGS,tags,TAGS
Actualizar
@romainl dijo que Vim parece estar usando ambos archivos de etiquetas : tagsy TAGS.
:echo tagfiles()
['tags', 'TAGS']
Si cambio la tagsopción para excluir el archivo TAGS ( :set tags=./tags,tags), el problema de etiquetas duplicadas no existe.
¿Dónde está el TAGSarchivo? Solo hay un tagsarchivo en el directorio de mi proyecto.
$ find {My project root directory} -iname tags
./tags

:echo tagfiles()?tagsyTAGS. ¿Tienes unTAGSarchivo/home/yufeng/mount/svncode/omu/zycp/Source/? ¿Podría ser un problema de mayúsculas y minúsculas?tagsarchivos y luego pidiéndoloTAGS. 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.Respuestas:
Como dijo @romainl, de hecho es un problema de mayúsculas y minúsculas FS (sistema de archivos).
Mi archivo de proyecto se monta desde Windows 7 a mi Fedora usando:
Desde la página de manual de mount.cifs :
Significa que el Mount preservará la distinción entre mayúsculas y minúsculas del servidor FS. Si el FS del servidor distingue entre mayúsculas y minúsculas, estos archivos montados serán sensibles a mayúsculas y minúsculas; Si el FS del servidor no distingue entre mayúsculas y minúsculas, no lo hará.
Windows 7 no distingue entre mayúsculas y minúsculas, lo que hace que estos archivos de proyecto no distingan entre mayúsculas y minúsculas.
Si la opción 'etiquetas' incluye tanto etiquetas como TAGS :
Vim buscará el archivo de etiquetas dos veces: una para etiquetas , otra para TAGS . En ambos tiempos, Vim descubre que hay uno que se ajusta. Esto hace que Vim confunda un mismo archivo de etiquetas con dos archivos diferentes.
En consecuencia, Vim usará dos archivos de etiquetas:
Por lo tanto, el problema de etiquetas duplicadas sucedió.
Si la opción 'etiquetas' solo incluye etiquetas :
El problema no existirá.
fuente