我像这样生成我的标签(Exuberant Ctags 5.9~svn20110310):
ctags --c++-kinds=+p --fields=+iaS --extra=+q -L ctags.files
我大致有这样的类结构:
class RenderObject
{
InterpolatedVector offset;
};
class Quad : public RenderObject
{
};
class KeyframeWidget : public Quad
{
void shiftRight()
{
if (!offset.isInterpolating())
offset.interpolateTo(Vector(offset.x+80, 0), 0.1, 0, 0, 0);
}
};
(代码来自Aquaria's open source release。)
如果我在 offset
上标记跳转(Ctrl-]),然后我每 offset
得到一个列表在我的代码库中。在我输入 offset.
之后到 shiftRight()
结束, OmniCppComplete 开始只为 InterpolatedVector
提供补全.
如何让我的标签跳转像OmniCppComplete一样智能? ?
难道只是标签跳转不使用任何上下文,所以它们只知道符号名称? (它与 :tag <C-r><C-w><CR>
完全相同吗?)是否有 vim 替代方案使它们具有上下文感知能力?
最佳答案
我最近开始使用 Vim 的 SmartTag 插件,发现它非常擅长使用来自周围 C++ 代码的上下文信息来找到正确的标签。
你可以在这里下载:
https://github.com/MarcWeber/SmartTag
为了能够通过 Ctrl-] 使用它,你需要使用带有 tagfunc 的 Vim 版本 补丁应用。它在这里:
关于c++ - 如何使 vim 标签跳转与 OmniCppComplete 一样智能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8272458/