我发现当给定符号存在多个标签时,Vim无法选择正确的标签。 我不知道这是不是真的,但至少我多次遇到过这个问题。
为了更清楚地说明问题,我们假设有两个类:两个不同的cpp文件中的A类和B类。它们都定义了一个名为AddContext的公共成员函数。然后在项目的源代码中的其他地方,让我们将其表示为位置x,A的实例称为其memeber函数AddContext。
你为项目生成标签并转到x并将光标移动到“AddContext”下,最后点击ctr-]。令你沮丧的是,vim跳转到B :: AddContext而不是A ::的定义和addContext。
有没有什么好的vim练习可以像我提到的那样解决问题呢?
答案 0 :(得分:2)
使用
:tnext
:tprevious
或
:tn
:tp
这将有助于以手动方式解决您的问题。 Ctags和Vim不了解上下文。所以你必须自己决定。
映射这些命令是解决问题的好方法。
您还可以尝试使用0scan插件。它可以帮助选择所需的地方以更方便的方式跳跃。将光标放在符号上,然后按0u
。
答案 1 :(得分:1)
而不是仅仅按^]
使用g^]
。如果光标下有标识符的多个标记,则会显示一个菜单,以便您可以选择要跳转到的标记。如果你跳转到标签并且它不是正确的标签,你可以使用:tselect
(你可以缩写为:ts
)来显示你所遵循的最后一个标签的菜单。