我有一个运行此命令的文件夹llvm2.9。Vim和Ctags:在生成标记时忽略某些文件
$> ctags -R --sort=1 --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++
这是* .html文件也是其存在于llvm2.9 /文档索引方法。我发现这一点,因为当我按下ctrl-]某些类,它去了html文件。
如何强制ctags单独使用.cpp/.h文件或忽略特定目录。
感谢
我有一个运行此命令的文件夹llvm2.9。Vim和Ctags:在生成标记时忽略某些文件
$> ctags -R --sort=1 --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++
这是* .html文件也是其存在于llvm2.9 /文档索引方法。我发现这一点,因为当我按下ctrl-]某些类,它去了html文件。
如何强制ctags单独使用.cpp/.h文件或忽略特定目录。
感谢
vim的最简单的方法是
:!ctags {.,**}/*.{cpp,h}
说明:花括号扩展到
:!ctags ./*.cpp **/*.cpp **/*.h **/*.h
所以它会在源文件或头文件当前目录(
./
)或任何嵌套目录(**/
)。注**/
将不匹配当前目录(它总是匹配至少1次目录级别)
在外壳:
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!
你能解释这些命令中的每一个发生了什么吗? –
@ still_dreaming_1我认为是。请参阅更新 – sehe
如果您需要排除的不仅仅是.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
引用您的排除模式以避免shell扩展。 – Walf
我不想追查其可能在大型项目中得到处理每一个文件类型,而我只是在Python感兴趣,所以我只能明确地使用ctags --languages=Python ...
处理Python文件。语言名称列表可以使用ctags --list-languages
来查看。
它似乎是问题的80%是由_forcing的language_到CPP所致。你为什么这样做? – sehe
否则,点击某个函数定义需要我在那里上市,而不是CPP文件中的HTML文件。 – excray
你确定吗?我的猜测是,处理HTML文件_without_'--language力= C++'会_not_拿起C++定义在首位的HTML中。你有证实吗?另外,我想你已经看到了我的答案(我的理解这个问题,我只是想挑战的前提下有点太) – sehe