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

时间:2011-10-12 07:33:25

标签: vim ctags

我有一个文件夹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文件或忽略特定目录。

由于

4 个答案:

答案 0 :(得分:22)

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

答案 1 :(得分:16)

如果您需要排除的不仅仅是.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

答案 2 :(得分:4)

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一起工作的方式是确保它与奇怪的文件名(例如包含空格甚至换行符)一起正常工作

我将留下其余的ctags选项以供您自己想象:)

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

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

并获得与vim相同的行为!

答案 3 :(得分:2)

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