35

当我运行时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.

问题是什么?

4

2 回答 2

71

thisthis类似,问题是您不是在运行 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

如果您查看手册页,您会发现它-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/
于 2010-06-03T18:00:07.170 回答
8

如果您安装了 elvis-tools,就会发生这种情况。用类似的东西删除它们

sudo apt-get remove elvis-tools 

然后安装 exuberant-ctags

sudo apt-get install exuberant-ctags
于 2012-07-12T09:07:53.327 回答