ctags命令没有递归说“它不是常规文件”

时间:2010-06-03 17:59:39

标签: ctags exuberant-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.

有什么问题?

2 个答案:

答案 0 :(得分:64)

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

也可以从源代码安装Excrant Ctags:

http://ctags.sourceforge.net/

答案 1 :(得分:8)

如果安装了elvis-tools,就会发生这种情况。用

之类的东西删除它们
sudo apt-get remove elvis-tools 

然后按

安装exuberant-ctags
sudo apt-get install exuberant-ctags