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