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

ind*_*div 33 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.
Run Code Online (Sandbox Code Playgroud)

问题是什么?

ind*_*div 67

类似这个这个,这个问题你没有运行旺盛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
Run Code Online (Sandbox Code Playgroud)

如果你查看手册页,你会发现它-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.
Run Code Online (Sandbox Code Playgroud)

您可以使用shell魔法递归生成标记,但如果您期望使用Exuberant Ctags,则可能会遇到问题.所以最好的解决方案可能是安装你想要的ctags:

sudo apt-get install exuberant-ctags
Run Code Online (Sandbox Code Playgroud)

也可以从源代码安装繁荣的Ctags:

http://ctags.sourceforge.net/
Run Code Online (Sandbox Code Playgroud)

  • +1是解决问题的非常有用的答案 (2认同)

kar*_*tik 8

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

sudo apt-get remove elvis-tools 
Run Code Online (Sandbox Code Playgroud)

然后安装exuberant-ctags

sudo apt-get install exuberant-ctags
Run Code Online (Sandbox Code Playgroud)