Ответ 1
Вы можете исключить тип файла, используя --exclude=*.html
У меня есть папка 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 или игнорировать определенный каталог.
Спасибо
Вы можете исключить тип файла, используя --exclude=*.html
Если вам нужно исключить больше, чем только файлы .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
Самый простой способ в 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!
Я не хотел отслеживать каждый тип файла, который может обрабатываться в большом проекте, и меня интересовал только Python, поэтому я явно обрабатывал только файлы python с помощью ctags --languages=Python ...
. Список имен языков можно увидеть с помощью ctags --list-languages
.