【问题标题】:how do I create a ctags file recursively?如何递归创建 ctags 文件?
【发布时间】:2016-08-27 22:14:56
【问题描述】:

我想使用ctags 创建一个标签文件以获得完整的源代码树。现在我通常会运行ctags *.c,但问题出在顶层目录中,没有源文件。 另外,我想让它接收*.c,*.h,*.cpp & *.hpp 文件,我该怎么做?

【问题讨论】:

  • ctags --recursectags -R 应该可以工作。您使用的是哪个版本的 ctags?
  • @WilliamPursell Ctags 5.9~svn20110310 来自 Ubuntu 存储库,如果您添加您的评论作为答案,我会接受它!

标签: vim ctags taglist


【解决方案1】:

您可以使用ctags --recursectags -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 -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
      

      现在递归选项起作用了。

      【讨论】:

        猜你喜欢
        • 2012-06-12
        • 2010-12-04
        • 2011-03-14
        • 1970-01-01
        • 2018-03-12
        • 2011-02-27
        • 2012-10-08
        相关资源
        最近更新 更多