Подтвердить что ты не робот

Vim и Ctags: игнорирование определенных файлов при создании тегов

У меня есть папка 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 или игнорировать определенный каталог.

Спасибо

4b9b3361

Ответ 1

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

Ответ 2

Если вам нужно исключить больше, чем только файлы .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

Ответ 3

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

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

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

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

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

В оболочке:

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

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

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

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

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

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

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

Ответ 4

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