当前位置:  开发笔记 > 运维 > 正文

如何自动更新vim中的标签文件?

如何解决《如何自动更新vim中的标签文件?》经验,为你挑选了4个好方法。

我使用Ctrl-]使用vim C++标记文件进行导航.问题是每当某个文件被修改,链接不再有效,我必须重新运行ctags并更新标记文件.我们的代码库很庞大,生成标记文件需要很长时间.

有没有工具在后台定期更新标签文件?我可以配置VIM来做同样的事情吗?

我在Windows下使用gvim.



1> DrAl..:

继Blixtor的回答之后,你需要仔细考虑一下脚本的设计.我建议隔离设计,使自动命令使用Windows"启动"命令或类似命令在后台运行外部脚本:从而防止Vim在生成标记文件时无响应.

然后该脚本可以使用不同的文件名生成标记文件(即不是"标记" ctags -R -o newtags .:),tags并且当ctags完成时,删除并重命名newtagstags.这将防止标记文件在生成完成时在Vim中不可用.


实际上,taglist插件已经具有在文件更改时自动更新其taglist的功能.我唯一找不到的是该插件如何与普通标签集成,以便^]使用该列表.也许有这样的解决方案(我会对此感兴趣).我的两分钱:)

2> xolox..:

我写了vim-easytags插件来做到这一点.我通过扫描整个项目(:UpdateTags **/*.[hc]例如使用命令)初始化我的标签文件一次,然后插件将在我编辑时自动更新标签文件,并:update在Vim中自动更新源代码文件.虽然它更新了标签文件,但它会阻止Vim,但因为它只扫描当前文件所以它不需要很长时间.

更新(2014-07-30):仍在使用vim-easytags插件:-).现在它支持异步模式以避免阻塞Vim.在我写这个时,异步模式还不是默认模式,但经过一些反馈之后,我可能会切换默认模式.



3> Dmitry Frank..:

我已经用ctags编写了一个插件来完成所有艰苦的工作:Indexer.

它为整个项目提供无痛自动标签生成,并使标签保持最新.标签是在后台生成,因此,您不必等待ctags生成标签.您可以单独使用它,也可以作为另一个插件project.tar.gz的附加组件使用它.

在第一种方式中,您可以~/.indexer_files像这样声明项目:

[CoolProject]

/home/user/cool_project

[AnotherProject]
option:ctags_params = "--languages=c++"

/home/user/another_project/src
/home/user/another_project/lib 

然后,当您打开任何文件时/home/user/cool_project,所有这个项目都将被ctags索引.当您从另一个项目打开标签时,也会为其生成标签.来自不同项目的标签永远不会混合.从项目中保存文件时,标记会以静默方式更新.你不必关心它,它只是有效.

有关详细信息,请参阅文章:Vim:项目的方便代码导航,它完全解释了Indexer + Vimprj的用法.

它已在Vim 7.3上成功通过以下系统测试:

的Archlinux

Ubuntu 10.4

Windows XP

Mac OS X Lion



4> Blixtor..:

一个主意:

每次使用BufWritePost事件保存缓冲区时,使用Vim自动命令(:help autocommand)来触发脚本的运行.

此脚本启动ctags生成并包含一些额外的小逻辑,以便在它已经运行时运行(或者最多每10分钟运行一次等).

编辑:

事先在这里询问了类似的事情,请参阅Vim自动生成ctags

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有