web-dev-qa-db-ja.com

ctagsコマンドは「通常のファイルではありません」と繰り返されません

実行すると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.

何が問題ですか?

34
indiv

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と同等であることがわかります。実際、manページでは、オプションとして再帰についても言及されていません。

   -R, --no-regex
          Don't  do  any more regexp matching on the following files.  May
          be freely intermixed with filenames and the --regex option.

シェルマジックを使用してタグを再帰的に生成することもできますが、あふれんばかりのCtagを期待している場合は、将来的に問題が発生する可能性があります。したがって、最善の解決策は、代わりに必要なctagsをインストールすることです。

Sudo apt-get install exuberant-ctags

あふれんばかりのCtagsはソースからインストールすることもできます:

http://ctags.sourceforge.net/
68
indiv

Elvis-toolsがインストールされている場合に発生します。次のようなものでそれらを削除します

Sudo apt-get remove elvis-tools 

次に、exuberant-ctagsをインストールします。

Sudo apt-get install exuberant-ctags
8
kartik