Vim 和 Ctags:生成标签时忽略某些文件

发布于 2024-12-09 12:46:01 字数 286 浏览 0 评论 0原文

我有一个文件夹 llvm2.9,我在其中运行了此命令。

$> ctags -R --sort=1 --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++

这是 *.html 文件中的索引方法,也存在于 llvm2.9/docs 中。我发现这一点是因为当我按某些类的 ctrl-] 时,它会转到 html 文件。

如何强制 ctags 单独使用 .cpp/.h 文件或忽略特定目录。

谢谢

I have a folder llvm2.9 in which i ran this command.

gt; ctags -R --sort=1 --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++

This was indexing methods in *.html files also which were present in llvm2.9/docs. I found this out because when i pressed ctrl-] for some class, it went to the html file.

How do i force ctags to use .cpp/.h files alone or ignore a particular directory.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

沧笙踏歌 2024-12-16 12:46:01

您可以使用排除文件类型
--exclude='*.html'

You can exclude a filetype using
--exclude='*.html'

a√萤火虫的光℡ 2024-12-16 12:46:01

如果您需要排除的不仅仅是 .html 文件:

您不能在排除选项内用逗号分隔列表。这不起作用:

ctags --exclude=*.html,*.js ./*

但是,您可以传递多个排除选项:

ctags --exclude=*.html --exclude=*.js ./*

传递 -V 选项以帮助调试:

ctags -V --exclude=*.html --exclude=*.js ./*

给出输出:

Reading initial options from command line
  Option: --exclude=*.html
    adding exclude pattern: *.html
  Option: --exclude=*.js
    adding exclude pattern: *.js

If you need to exclude more than just .html files:

You can't comma separate a list inside an exclude option. This doesn't work:

ctags --exclude=*.html,*.js ./*

However, you can pass multiple exclude options:

ctags --exclude=*.html --exclude=*.js ./*

Pass the -V option to help with debugging:

ctags -V --exclude=*.html --exclude=*.js ./*

Gives the output:

Reading initial options from command line
  Option: --exclude=*.html
    adding exclude pattern: *.html
  Option: --exclude=*.js
    adding exclude pattern: *.js
动次打次papapa 2024-12-16 12:46:01

vim 中最简单的方法是

 :!ctags {.,**}/*.{cpp,h}

说明:大括号扩展为

<前><代码>:!ctags ./*.cpp **/*.cpp **/*.h **/*.h

因此它会在当前目录 (./) 或任何嵌套目录 (**/) 中查找源文件或头文件。注意 **/ 不会匹配当前目录(它始终匹配至少 1 个子目录级别)

在 shell 中:

 find -iname '*.cpp' -o '*.h' -print0 | xargs -0 ctags

解释:这会递归地查找当前目录下的所有.cpp和.h文件,并将它们传递给命令行上的ctags

print0-0 一起工作的方式是确保它能够正确处理奇怪的文件名(例如包含空格甚至换行符)

我将保留其余的 ctag根据您自己的想象力进行选择:)

PS。对于最近的 bash-es,您可以使用

 shopt -s globstar
 ctags {.,**}/*.{cpp,h}

并获得与 vim 中相同的行为!

The simplest way in vim would be

 :!ctags {.,**}/*.{cpp,h}

Explanation: The braces expand to

:!ctags ./*.cpp **/*.cpp **/*.h **/*.h 

So it looks for source or header files in the current directory (./) or any nested directory (**/). Note **/ wouldn't match the current directory (it always matches at least 1 sub directory level)

In shell:

 find -iname '*.cpp' -o '*.h' -print0 | xargs -0 ctags

Explanation: This recursively finds all .cpp and .h files under the current directory and passes them to ctags on the command line.

The way print0 and -0 work together is to ensure it works correctly with weird filenames (e.g. containing whitespace or even new line characters)

I'll leave the rest of the ctags options for your own imagination :)

PS. For recent bash-es, you can use

 shopt -s globstar
 ctags {.,**}/*.{cpp,h}

and get much the same behaviour as in vim !

九歌凝 2024-12-16 12:46:01

我不想追踪可能在大型项目中处理的每种文件类型,而且我只对 Python 感兴趣,因此我明确仅使用 ctags --languages=Python ...。可以使用ctags --list-languages查看语言名称列表。

I didn't want to track down every filetype which might get processed in a large project, and I was only interested in Python, so I explicitly only processed python files using ctags --languages=Python .... The list of language names can be seen using ctags --list-languages.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文