Vim& ctags:所有项目的常见标签?

时间:2012-03-25 06:46:08

标签: vim ctags

我刚刚熟悉了Vim的CTags功能 - 而且非常方便。

我遇到的一个问题是为每个项目重新生成常用标签。

例如 - 我在rails中做了相当多的工作,并希望为整个rails框架生成ctags

alias rctags="ctags -R `bundle show rails`/../*"

问题是我必须为我启动的每个rails项目执行此操作。

那么,只有当打开的文件满足特定条件时,在任何vim会话中自动访问一组标记的标准方法是什么?理想情况下。 (例如,为.rb文件预加载了rails ctags,但没有预先加载.py文件)

赞赏任何想法

2 个答案:

答案 0 :(得分:2)

请参阅:help 'tags'

您可以使用,例如:

set tags+=~/.rails-tags

这将导致~/.rails-tags搜索标签。

(另外,关于标签的话题:用tags后缀;/变量可能很有用。这意味着“在工作目录的每个父节点中搜索标签文件(例如,所有将搜索文件/foo/bar/tags/foo/tags/tags。例如,我使用:set tags=tags;/)。

答案 1 :(得分:2)

为什么不使用专为管理Vim中的ctags而设计的插件Indexer

您可以在~/.indexer_files中定义您的项目,如下所示:

[my_rails_project]
/path/to/the/needed/directory

甚至

[my_rails_project]
option:ctags_params = "--languages=Ruby"
/path/to/the/needed/directory

然后每当您从目录*.rb(当然还有子目录)打开Ruby文件(即*.ruby/path/to/the/needed/directory)时,您的标记将在后台进程中自动生成,当你从这个项目中保存任何文件时,标签也会自动更新(再次,在后台)。

所以,你不应该关心你的标签生成,它只是有效。

有关详情,请参阅文章:Vim: convenient code navigation for your projects,该文章详细解释了Indexer + Vimprj的用法。