Когда я работаю ctags -R *
, Я получаю ошибки, говоря, что все каталоги не являются регулярными файлами, и это пропускает их вместо того, чтобы рекурсивно генерировать теги для них.
ctags: skipping arpa: it is not a regular file.
ctags: skipping asm: it is not a regular file.
ctags: skipping asm-generic: it is not a regular file.
ctags: skipping bits: it is not a regular file.
ctags: skipping blkid: it is not a regular file.
ctags: skipping boost: it is not a regular file.
В чем проблема?
Подобно this и this, проблема в том, что вы используете не Exuberant Ctags, а GNU Emacs etags
, который также предоставляет ctags
исполняемый файл. Запустите ctags --version
и вы увидите что-то вроде этого:
ctags (GNU Emacs 23.1)
Copyright (C) 2009 Free Software Foundation, Inc.
This program is distributed under the terms in ETAGS.README
А если вы посмотрите в man-страницу, то увидите, что -R
фактически эквивалентно --no-regex
. На самом деле, на странице руководства даже не упоминается рекурсия как опция.
-R, --no-regex
Don't do any more regexp matching on the following files. May
be freely intermixed with filenames and the --regex option.
Вероятно, вы можете генерировать теги рекурсивно, используя магию shell, но вы можете столкнуться с проблемами на пути, если вы ожидаете Exuberant Ctags. Поэтому лучшим решением будет установить нужные вам ctags:
sudo apt-get install exuberant-ctags
Exuberant Ctags также можно установить из исходников:
http://ctags.sourceforge.net/