重新加载标签文件 Vim

问题描述 投票:0回答:4

如何从 Vim 中重新加载

tags
文件?

需要重启吗?

vim tags ctags
4个回答
20
投票

根据

:help tag-binary-search
,每次查找时都会对标签文件进行二进制(或线性)搜索,因此无需重新加载文件:

                                                        *tag-binary-search*
Vim uses binary searching in the tags file to find the desired tag quickly
(when enabled at compile time |+tag_binary|).  But this only works if the
tags file was sorted on ASCII byte value.  Therefore, if no match was found,
another try is done with a linear search.  If you only want the linear search,
reset the 'tagbsearch' option.  Or better: Sort the tags file!

Note that the binary searching is disabled when not looking for a tag with a
specific name.  This happens when ignoring case and when a regular expression
is used that doesn't start with a fixed string.  Tag searching can be a lot
slower then.  The former can be avoided by case-fold sorting the tags file.
See 'tagbsearch' for details.

5
投票

据我所知,Vim 7.3 没有必要在生成

tags
文件后立即使用它。


1
投票

我发现将标签文件加载到另一个缓冲区/选项卡中会有所帮助。 然后我可以使用

:e!
重新加载该缓冲区,让 vim 查看我的标签更新。


0
投票

我使用的是vim 9.1。最初,我发现,在 vim 外部更新标签文件后(在命令行上使用 ctags),vim 会向我显示标签文件更新后 before 的标签定义。这是通过 ctrl-] 序列实现的,我认为它会触发 vim 使用标签文件。

但是,我现在意识到 cscope(我也使用并配置了它)是这里的罪魁祸首,而不是 ctags。如果我发出命令“cs Reset”,旧的定义将被清除。此外,我无需先退出 vim 即可进行此更新。我最终得到了受影响标签的单个定义,该定义已更新。

另一个奇怪的地方是“tags”变量,即“settags=”。有时,当我再次设置此选项时,vim 似乎会注意到更新的标签文件 - 例如“设置标签./tags”。将其设置为“设置标签”不会清除旧标签,但“cscope重置”命令可以。

总而言之,如果您在使用多个标签定义时遇到问题,并且还使用 cscope,那么这很可能是真正的罪魁祸首,而不是 ctags 本身。

© www.soinside.com 2019 - 2024. All rights reserved.