vim ctags

Vim y Ctags: ignorar ciertos archivos al generar etiquetas



(4)

Tengo una carpeta llvm2.9 en la que ejecuté este comando.

$> ctags -R --sort=1 --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++

Esto fue métodos de indexación en archivos * .html que también estaban presentes en llvm2.9 / docs. Descubrí esto porque cuando presioné ctrl-] para alguna clase, fue al archivo html.

¿Cómo puedo forzar a ctags para usar archivos .cpp / .h solo o ignorar un directorio en particular?

Gracias


La forma más simple en vim sería

:!ctags {.,**}/*.{cpp,h}

Explicación: Las llaves se expanden a

:!ctags ./*.cpp **/*.cpp **/*.h **/*.h

Por lo tanto, busca los archivos de origen o de encabezado en el directorio actual ( ./ ) o cualquier directorio anidado ( **/ ). Nota **/ no coincidiría con el directorio actual (siempre coincide con al menos 1 nivel de subdirectorio)

En cáscara:

find -iname ''*.cpp'' -o ''*.h'' -print0 | xargs -0 ctags

Explicación : Esto recursivamente encuentra todos los archivos .cpp y .h en el directorio actual y los pasa a ctags en la línea de comando.

La forma en que print0 y -0 trabajan juntos es asegurarse de que funcione correctamente con nombres de archivos extraños (por ejemplo, que contengan espacios en blanco o incluso nuevos caracteres de línea)

Dejaré el resto de las opciones de ctags para tu propia imaginación :)

PD. Para los últimos bash-es, puedes usar

shopt -s globstar ctags {.,**}/*.{cpp,h}

y obtén mucho el mismo comportamiento que en vim!


No quería rastrear todos los tipos de archivos que podrían procesarse en un proyecto grande, y solo me interesaba Python, así que solo ctags --languages=Python ... explícitamente los archivos Python usando ctags --languages=Python ... La lista de nombres de idiomas se puede ver usando ctags --list-languages .


Puede excluir un tipo de archivo usando --exclude=*.html


Si necesita excluir más que solo archivos .html:

No puede comas separar una lista dentro de una opción de exclusión. Esto no funciona:

ctags --exclude=*.html,*.js ./*

Sin embargo, puede pasar varias opciones de exclusión:

ctags --exclude=*.html --exclude=*.js ./*

Pase la opción -V para ayudar con la depuración:

ctags -V --exclude=*.html --exclude=*.js ./*

Da la salida:

Reading initial options from command line Option: --exclude=*.html adding exclude pattern: *.html Option: --exclude=*.js adding exclude pattern: *.js