如何递归创建 ctags 文件?
Posted
技术标签:
【中文标题】如何递归创建 ctags 文件?【英文标题】:how do I create a ctags file recursively? 【发布时间】:2016-08-27 22:14:56 【问题描述】:我想使用ctags
创建一个标签文件以获得完整的源代码树。现在我通常会运行ctags *.c
,但问题出在顶层目录中,没有源文件。
另外,我想让它接收*.c
,*.h
,*.cpp
& *.hpp
文件,我该怎么做?
【问题讨论】:
ctags --recurse
或 ctags -R
应该可以工作。您使用的是哪个版本的 ctags?
@WilliamPursell Ctags 5.9~svn20110310
来自 Ubuntu 存储库,如果您添加您的评论作为答案,我会接受它!
【参考方案1】:
您可以使用ctags --recurse
或ctags -R
递归地下降到目录树中。
【讨论】:
在 Ubuntu 18.04 上,当我尝试这个时,安装了ctags
,但它不支持 --recurse
。我做了sudo apt-get install ctags
,然后效果很好。
请注意,emacs-ctags 没有--recurse
,详细的 (-v
) 应该供应商或检查帮助输出以查看它是否具有递归
-R 在 ctags (GNU Emacs 27.2) 中忽略正则表达式【参考方案2】:
如果你想为你的 git repo 中的 c/c++/javascript/java/python 文件生成标签(尊重 .gitignore):
git ls-files | ctags --links=no --languages=c,c++,javascript,java,python -L-
【讨论】:
【参考方案3】:如果根目录中没有任何源,最好的过滤方法是使用--languages
选项。这是我用于混合语言项目的一个,我只想要 Tcl 文件的标签。
ctags -R --languages=Tcl .
注意,如果您需要支持多种语言,可以使用 , 添加它们,
要查看语言列表,请使用--list-languages
【讨论】:
【参考方案4】:您可以按照其他人的建议使用ctags -R
或stags --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
现在递归选项起作用了。
【讨论】:
以上是关于如何递归创建 ctags 文件?的主要内容,如果未能解决你的问题,请参考以下文章