如何让 vim 标签跳转像 OmniCppComplete 一样智能?

发布于 2024-12-18 05:17:51 字数 1029 浏览 2 评论 0原文

我生成我的标签(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 的开源版本。)

如果我在 offset 上标记跳转(Ctrl-]),然后我会在代码库中的每个 offset 中得到一个列表。在我在 shiftRight() 末尾输入 offset. 后,OmniCppComplete 开始仅为 InterpolatedVector 提供补全。

如何让我的标签跳转像 OmniCppComplete 一样智能?

难道只是标签跳转不使用任何上下文,所以它们只知道符号名称? (它与 :tag 完全相同吗?)是否有一个 vim 替代方案可以使它们具有上下文感知能力?

I generate my tags (Exuberant Ctags 5.9~svn20110310) like this:

 ctags --c++-kinds=+p --fields=+iaS --extra=+q -L ctags.files

I have roughly this class structure:

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);
    }
};

(Code is from Aquaria's open source release.)

If I tag jump on offset (Ctrl-]), then I get a list every offset in my codebase. After I type offset. to the end of shiftRight(), OmniCppComplete starts offering completions only for InterpolatedVector.

How can I make my tag jumps as smart as OmniCppComplete?

Is it just that tag jumps don't use any context, so they only know symbol names? (Is it the exact same as :tag <C-r><C-w><CR>?) Is there a vim alternative that makes them context-aware?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

丢了幸福的猪 2024-12-25 05:17:51

我最近开始使用 Vim 和 SmartTag 插件。发现它非常擅长使用周围 C++ 代码的上下文信息来找到正确的标签。

您可以在此处下载:

https://github.com/MarcWeber/SmartTag

以便能够使用它使用 Ctrl-] 你需要使用带有 tagfunc 的 Vim 版本
应用补丁。它在这里:

http://llorens.visualserver.org/vim73-tagfunc.zip

I recently started using the SmartTag plugin for Vim & find it very good at using contextual information from the surrounding C++ code to find the right tag.

You can download it here:

https://github.com/MarcWeber/SmartTag

To be able to use it with Ctrl-] you will need to use a Vim release with the tagfunc
patch applied. It's here:

http://llorens.visualserver.org/vim73-tagfunc.zip

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文