Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim 如何递归创建ctags文件?_Vim_Ctags_Taglist - Fatal编程技术网

Vim 如何递归创建ctags文件?

Vim 如何递归创建ctags文件?,vim,ctags,taglist,Vim,Ctags,Taglist,我想使用ctags为完整的源代码树创建一个标记文件。现在我通常会运行ctags*.c,但问题是在顶层目录中,没有源文件。 另外,我想让它拾取*.c,*.h,*.cpp,*.hpp文件,我该怎么做呢?您可以使用ctags--recurse或ctags-R递归下降到目录树中。如果根目录中没有任何源代码,最好的过滤方法是使用--languages选项。这是我在一个混合语言项目中使用的一个,在这个项目中,我只需要Tcl文件的标记 ctags -R --languages=Tcl . 注意,如果您需要对

我想使用
ctags
为完整的源代码树创建一个标记文件。现在我通常会运行
ctags*.c
,但问题是在顶层目录中,没有源文件。
另外,我想让它拾取
*.c
*.h
*.cpp
*.hpp
文件,我该怎么做呢?

您可以使用
ctags--recurse
ctags-R
递归下降到目录树中。

如果根目录中没有任何源代码,最好的过滤方法是使用
--languages
选项。这是我在一个混合语言项目中使用的一个,在这个项目中,我只需要Tcl文件的标记

ctags -R --languages=Tcl .
注意,如果您需要对多种语言的支持,可以使用


要查看语言列表,如果要为git repo中的c/c++/javascript/java/python文件生成标记,请使用
--list languages

(关于.gitignore):


正如其他人所建议的,您可以使用
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 5.9~svn20110310,版权所有(C)1996-2009 Darren Hiebert
地址:,http://ctags.sourceforge.net
可选编译功能:+通配符,+regex

现在recurse选项可以工作了。

ctags--recurse
ctags-R
应该可以工作。您使用的是哪个版本的ctags?@williampersell
ctags 5.9~svn20110310
来自Ubuntu repo,如果您添加您的评论作为答案,我将接受它!在Ubuntu18.04上,当我尝试此功能时,安装了
ctags
,但它不支持
--recurse
。我做了
sudo apt get install ctags
,然后工作正常。请注意,emacs ctags没有一个
--recurse
,verbose(
-v
)将通知供应商或检查帮助输出,以查看它是否有递归
# 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