【发布时间】:2014-02-09 13:19:46
【问题描述】:
我一直在使用 ctags 和下面的 vim 脚本,并且在我自己的小项目中没有问题。但是当我进入一些大项目时,在用 c++ 编写的游戏中,ctags 和 cscope 的递归命令似乎比我想象的要慢很多。我现在实际上设法在后台运行它,但似乎我的笔记本电脑正忙于进行标记。
我听说有一个解决方案,在每个子目录中,你做一个标签,当你在一个特定的子目录中工作时,你可以在根目录中查阅标签以获得其他子目录标签。这可能吗?如果有人可以用这种方法给我具体的 HOW-TOS,我将不胜感激。
或者如果有更好的解决方案,我很想知道。
这是我的 vim 脚本代码
function! UpdateTags()
let curdir = getcwd()
let gitdir = finddir('.git', '.;/')
if isdirectory(gitdir)
let l:rootdir = fnamemodify(gitdir, ':h')
execute 'silent cd ' . l:rootdir
execute 'silent !ctags -R --c++-kinds=+p --fields=+iaS --extra=+q &'
if has("cscope")
execute 'silent !cscope -Rbkq &'
execute 'silent cs reset'
endif " has("cscope")
execute 'silent cd ' . curdir
endif
endfunction
【问题讨论】:
-
一个可能的解决方案:Effortless Ctags with Git
-
你能告诉我们你的
tags选项的价值是什么吗? -
你提到的多个标签文件的方法,在ctags主页上有解释:ctags.sourceforge.net/faq.html#15 - 但我不确定你是否会发现根标签文件的更新更快。跨度>
-
@romainl 我使用 set tags=./tags,tags;
-
好像找不到更好的解决方案....