VIM自动创建CTAG

VIM自动创建CTAG,vim,ctags,Vim,Ctags,我喜欢CTAG,但每次我添加一个新的方法来重新创建我的文件时,结果都会适得其反,不仅如此,如果我需要重新启动我的VIM会话,情况会更糟,我还注意到,我需要为我想要使用的每个目录创建一个CTags文件,而不仅仅是在根文件夹中创建一个CTags文件,并让所有文件夹都可以访问它 有任何提示和建议吗?我已经编写了一个插件,可以完全满足您的需要: 它为整个项目提供无痛的自动标记生成,并使标记保持最新。您可以单独使用它,也可以将其作为其他插件的附加组件使用 第一种方法是,您可以在~/.indexer\u文件

我喜欢CTAG,但每次我添加一个新的方法来重新创建我的文件时,结果都会适得其反,不仅如此,如果我需要重新启动我的VIM会话,情况会更糟,我还注意到,我需要为我想要使用的每个目录创建一个CTags文件,而不仅仅是在根文件夹中创建一个CTags文件,并让所有文件夹都可以访问它


有任何提示和建议吗?

我已经编写了一个插件,可以完全满足您的需要:

它为整个项目提供无痛的自动标记生成,并使标记保持最新。您可以单独使用它,也可以将其作为其他插件的附加组件使用

第一种方法是,您可以在
~/.indexer\u文件中声明项目,如下所示:

[CoolProject]

/home/user/cool_project

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

/home/user/another_project/src
/home/user/another_project/lib 
然后,当您打开
/home/user/cool\u project
中的任何文件时,所有项目都将由CTAG索引。标记是在后台生成的,所以您不必等待CTAG生成标记。从另一个项目打开标记时,也会为其生成标记。来自不同项目的标记从不混合。当您从project保存文件时,标记会自动更新。你不必在意它,它只是起作用


有关详细信息,请参阅我的文章:,它详细解释了Indexer+Vimprj的用法。

中使用它。vimrc

set tags=./tags,tags;$HOME
Vim将首先在当前文件的目录中查找
标记
文件,然后在当前目录中查找,然后向上查找,直到到达
$HOME

自动
标记生成可以使用类似于插件的插件或
中的一行程序来完成。vimrc

autocmd BufWritePost,FileWritePost *.js silent! !jsctags . &

您可能已经看过了,但是这里有一个关于在vim中自动化CTAG的问题:感谢这个解决方案,我将尝试一下。你能详细说明一下“项目”吗?当你们谈论项目时,你们只是在谈论一个我将在其中进行开发的文件夹。此外,是否可以使用通配符来代替定义每种文件类型?**而不是*。c、 *。h、 …是的,我的意思是“项目”只是一个包含源文件的目录。(或者几个不同的目录)。您也可以将标签文件放在另一个目录下。在我工作的地方,我们将许多自动生成的东西放在每个项目根目录中名为_local的目录中<代码>设置标记=_本地/标记/
对我来说非常有用(即使它在项目目录上方搜索,它也在寻找一个名为_local的文件夹,但找不到)。请注意,我还有vim always
lcd
到BufEnter上当前缓冲区的目录…@dash tom bang您应该尝试
set autochdir
。如果它工作正常,我会使用
autochdir
。)我不记得具体细节,但几年前我开始使用vim时就不记得了。(谷歌搜索表明,在最近的7.3版本中,与之相关的一些错误已经修复,但我的解决方案工作可靠。另请参阅)我在2年前开始使用Vim,
autochdir
从未让我失望过。我现在记得,在搜索未根目录的通配符目录层次结构时,它在:vimgrep中导致了失败。例如
:vimgrep/term/***/.txt
;它会在搜索过程中切换目录,并且只会在每个级别上从第一个目录开始下降。