vim ctags

Vim: dificultad para configurar ctags. La fuente en los subdirectorios no ve el archivo de etiquetas en la raĆ­z del proyecto



(4)

Hay una opción para decirle a Vim dónde buscar el archivo de etiqueta.

Utilizo la siguiente configuración:

" search first in current directory then file directory for tag file set tags=tags,./tags

Extracto de ayuda:

Cuando un nombre de archivo de etiqueta comienza con "./", el ''.'' se reemplaza con la ruta del archivo actual. Esto hace posible usar un archivo de etiquetas en el directorio donde está el archivo actual (sin importar el directorio actual). La idea de usar "./" es que puede definir primero qué archivo de etiquetas se busca: en el directorio actual ("etiquetas,. / Etiquetas") o en el directorio del archivo actual ("./tags,tags") .

Por ejemplo:: set tags =. / Tags, tags, / home / user / commontags

Y mantengo mi directorio de trabajo actual en el directorio superior del proyecto donde se genera mi archivo de tags .

Use :pwd y luego :cd myproj (dentro de Vim) para ir al directorio que contiene su archivo de etiquetas.

Consulte :help tags-option de :help tags-option para obtener más información sobre la ruta de las etiquetas.

Su problema es probablemente que se encuentra en el directorio incorrecto o que la opción de tags no está configurada correctamente.

Estoy tratando de configurarlo con ctags (exuberantes) en Vim hoy y estoy teniendo dificultades para que funcione correctamente. Genero mi archivo ctags en la línea de comando con:

cd myproj ctags -R

Esto pone el archivo de etiquetas en la raíz myproj. Sin embargo, parece que Vim solo lee de este archivo de etiquetas cuando estoy trabajando en la fuente que reside en la raíz. Mientras navego hacia directorios más profundos, si intento saltar a una etiqueta usando <C-]> , obtengo:

E433: No tags file E426: tag not found: MyClassName

He verificado que MyClassName tiene una etiqueta en el archivo de etiquetas, es solo que Vim no lo ve. ¿Puede alguien explicar cómo configurar Vim para hacer referencia al archivo de etiquetas de la raíz?

Gracias.


Si genera un archivo de etiquetas para cada proyecto, es posible que le guste este patrón, especialmente si comparte su .vimrc en diferentes máquinas:

let repohome=substitute($REPO_HOME, "//", "/////", "g") let &tags=substitute(expand("%:p:h"), "//(".repohome."/.//{-}////).*", "//1tags", "")

Luego deberá establecer la variable de entorno $ REPO_HOME en su .bashrc en su directorio repo principal sin el espacio final (ej. /home/<yourusername>/repos ) y automáticamente buscará un archivo de etiquetas en cada subdirectorio de $ REPO_HOME con una profundidad de 1, p. ej. /home/<yourusername>/repos/myproj/tags .


#!/bin/sh FREEZE_NAME=/* Give some version number */ mkdir $HOME/ctags/$FREEZE_NAME V1=/* Software Path */ find $V1 -name "*.h" | xargs /usr/local/bin/ctags -a -f $HOME/ctags/$FREEZE_NAME/h.tags find $V1 -name "*.c" | xargs /usr/local/bin/ctags -a -f $HOME/ctags/$FREEZE_NAME/c.tags cd $HOME/ctags/$FREEZE_NAME/ rm -f all.tags cat c.tags h.tags >> all.tags sort all.tags > temp.tags mv temp.tags all.tags rm -f c.tags h.tags

Coloque el código anterior en un archivo .sh y ejecútelo ... Esto generará sus etiquetas con seguridad.


set tags=tags;/

Esto verificará la carpeta actual del archivo de etiquetas y continuará un directorio hasta llegar a la carpeta raíz. ASÍ PUEDES estar en cualquier subcarpeta de tu proyecto y podrá encontrar los archivos de etiquetas.