如何递归创建ctags文件?

时间:2016-08-27 22:14:56

标签: vim ctags taglist

我想使用ctags为完整的源树创建一个标记文件。现在我一般会运行ctags *.c,但问题出在顶层目录中,没有源文件。 另外,我希望它能够选择*.c*.h*.cpp& *.hpp个文件,我该怎么做?

4 个答案:

答案 0 :(得分:4)

您可以使用Derivedctags --recurse以递归方式下降到目录树中。

答案 1 :(得分:1)

如果您要为git repo中存在的c / c ++ / javascript / java / python文件生成标签(尊重.gitignore):

git ls-files | ctags --links=no --languages=c,c++,javascript,java,python -L- 

答案 2 :(得分:0)

如果根目录中没有任何源,则过滤的最佳方法是使用--languages选项。这是我用于混合语言项目的一个,我只想要Tcl文件的标签。

ctags -R --languages=Tcl .

注意,如果您需要支持多种语言,可以使用

添加它们

要查看语言列表,请使用--list-languages

答案 3 :(得分:0)

您可以按照其他人的建议使用ctags -Rstags --recurse

但是,正如用户cxw所提到的,这在Ubuntu 18.04上不起作用。

这就是我发现的东西。默认安装有:

# ctags --version
ctags (GNU Emacs 25.2)
Copyright (C) 2017 Free Software Foundation, Inc.
This program is distributed under the terms in ETAGS.README

然后,在sudo apt-get install ctags之后,我得到:

# ctags --version
Exuberant Ctags 5.9~svn20110310, Copyright (C) 1996-2009 Darren Hiebert
  Addresses: <dhiebert@users.sourceforge.net>, http://ctags.sourceforge.net
  Optional compiled features: +wildcards, +regex

现在递归选项起作用了。