Vim и Ctags: игнорирование определенных файлов при создании тегов - PullRequest
25 голосов
/ 12 октября 2011

У меня есть папка llvm2.9, в которой я выполнил эту команду.

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

Это были методы индексации в файлах * .html, которые присутствовали в llvm2.9 / docs.Я узнал об этом, потому что когда я нажал ctrl-] для какого-то класса, он перешел к html-файлу.

Как заставить ctags использовать только файлы .cpp / .h или игнорировать определенный каталог.

Спасибо

Ответы [ 4 ]

22 голосов
/ 12 октября 2011

Вы можете исключить тип файла, используя --exclude=*.html

16 голосов
/ 17 сентября 2013

Если вам нужно исключить не только файлы .html:

Вы не можете разделять запятые списком внутри опции исключения. Это не работает:

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

Однако вы можете передать несколько опций исключения:

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

Передайте опцию -V, чтобы помочь с отладкой:

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

Дает вывод:

Reading initial options from command line
  Option: --exclude=*.html
    adding exclude pattern: *.html
  Option: --exclude=*.js
    adding exclude pattern: *.js
4 голосов
/ 12 октября 2011

Самый простой способ в vim:

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

Объяснение: Скобки расширяются до

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

Таким образом, он ищет источник или заголовокфайлы в текущем каталоге (./) или любом вложенном каталоге (**/).Примечание. **/ не соответствует текущему каталогу (он всегда соответствует как минимум 1 уровню подкаталога)

В оболочке:

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

Объяснение: это рекурсивно находит все файлы .cpp и .h в текущем каталоге и передает их в ctags в командной строке.

Способ совместной работы print0 и -0 состоит в том, чтобы обеспечить правильную работу со странными именами файлов (например, содержа пробелы или даже символы новой строки)

Я оставлюостальные опции ctags для вашего собственного воображения:)

PS.Для последних версий bash-ов вы можете использовать

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

и получить то же поведение, что и в vim!

2 голосов
/ 25 августа 2016

Я не хотел отслеживать каждый тип файла, который может быть обработан в большом проекте, и меня интересовал только Python, поэтому я явно обрабатывал только файлы Python, используя ctags --languages=Python ....Список названий языков можно увидеть с помощью ctags --list-languages.

...