如何递归创建 ctags 文件?
how do I create a ctags file recursively?
我想使用 ctags
为完整的源代码树创建一个标签文件。现在我通常会 运行 ctags *.c
但问题出在顶级目录中,没有源文件。
另外,我希望它能够获取 *.c
、*.h
、*.cpp
和 *.hpp
文件,我该怎么做?
您可以使用 ctags --recurse
或 ctags -R
递归下降到目录树。
如果根目录中没有任何源,最好的过滤方法是使用 --languages
选项。这是我用于 mixed-language 项目的一个,我只想要 Tcl 文件的标签。
ctags -R --languages=Tcl .
注意,如果您需要支持多种语言,您可以添加它们,
要查看语言列表,请使用 --list-languages
如果您想为 git 存储库中存在的 c/c++/javascript/java/python 文件生成标签(尊重 .git 忽略):
git ls-files | ctags --links=no --languages=c,c++,javascript,java,python -L-
您可以按照其他人的建议使用 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
为完整的源代码树创建一个标签文件。现在我通常会 运行 ctags *.c
但问题出在顶级目录中,没有源文件。
另外,我希望它能够获取 *.c
、*.h
、*.cpp
和 *.hpp
文件,我该怎么做?
您可以使用 ctags --recurse
或 ctags -R
递归下降到目录树。
如果根目录中没有任何源,最好的过滤方法是使用 --languages
选项。这是我用于 mixed-language 项目的一个,我只想要 Tcl 文件的标签。
ctags -R --languages=Tcl .
注意,如果您需要支持多种语言,您可以添加它们,
要查看语言列表,请使用 --list-languages
如果您想为 git 存储库中存在的 c/c++/javascript/java/python 文件生成标签(尊重 .git 忽略):
git ls-files | ctags --links=no --languages=c,c++,javascript,java,python -L-
您可以按照其他人的建议使用 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
现在递归选项起作用了。