我如何使vim标签跳跃像OmniCppComplete一样智能
How can I make vim tag jumps as smart as OmniCppComplete?
我像这样生成我的标签(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);
}
};
(代码来自于quaria的开源版本)
如果我在offset
上标记跳转(Ctrl-]),那么我在代码库中得到每个offset
的列表。在我输入offset.
到shiftRight()
的末尾后,OmniCppComplete开始提供仅针对InterpolatedVector
的补全。
如何使我的标签跳跃像OmniCppComplete一样智能?
只是标签跳转不使用任何上下文,所以他们只知道符号名称吗?(它是完全相同的:tag <C-r><C-w><CR>
?)是否存在一种有效的替代方案,使它们能够感知上下文?
我最近开始使用Vim的SmartTag插件;我发现它非常擅长使用周围c++代码中的上下文信息来找到正确的标签。
你可以在这里下载:
https://github.com/MarcWeber/SmartTag要能够使用它与Ctrl-],你将需要使用一个Vim发布与标签函数补丁应用。在这里:
http://llorens.visualserver.org/vim73-tagfunc.zip相关文章:
- 1d 智能指针不适用于语法 (*)++
- 优先顺序:智能指针和类析构函数
- 对于C++中使用智能指针的指针算术限制,有没有一种变通方法
- 智能指针作为无序映射键,并通过引用进行比较
- 智能指针概念所有权和寿命
- 正在理解智能指针,但出现错误:未分配正在释放的指针
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 尝试使用智能指针时引发异常
- 为什么在C++中对链表这样做?(像堆叠一样处理它们)
- 堆栈和队列是否像C++中的数组一样传递?
- 我可以制作指向智能指针的智能指针吗?
- 通过智能指针和转换对基本模板参数进行模板推导
- OpenCV 我应该使用智能指针来防止内存泄漏吗?
- 从堆栈分配的原始指针构造智能指针
- 初始化指向类实例的智能指针并访问其方法
- 是否有技术原因阻止 Java 中的 final C++ 像 const 一样严格?
- 如何使用 std::make_shared 创建基类类型的智能指针?
- 学习 c++11 智能指针,它不会让我像指针一样使用隐式转换吗?
- STL 容器是否像shared_ptr一样执行智能释放
- 我如何使vim标签跳跃像OmniCppComplete一样智能