然而,令人失望的是,ctags是一个非常简单的解析器。
有没有更完整的替代品?
特别是我在寻找的东西:
>为函数声明扩展#define(x,y)x ## y样式宏
>进程#include语句
>允许为依赖关系指定包含路径
我看到clang提供了一个程序api访问的c AST,所以肯定这不是很难做到吗?
有人已经做了吗?
– –
编辑:
这些不切断它:
> clang_indexer – 不编译;当它(在黑客之后),不工作(无尽的错误)。
> clang_complete – 似乎不比ctags好。没有上下文特定的建议,没有结构完成,没有函数参数,没有宏扩展;只是一个符号列表和他们来自的文件。
我最近得到的是一个叫gccsense.不幸的是,该项目似乎被遗弃,而且它是困难的设置,因为英语不是作者的第一语言。
我从另一个角度结束了问题。我决定intellisense / autocomplete对我的编码比拥有vim的所有可用功能更重要,所以我选择了一个IDE,如Eclipse,然后找到一个模拟Vim的Eclipse插件。到目前为止,我发现的最好的插件类型是Viable。
这里是我已经尝试并发现不满意的选项的完整列表:
> clang – 需要从gcc切换到另一个更好的编译器。问题是gcc更成熟[编辑显然你不需要切换编译器见下面的注释,我可以给这个另一个尝试在未来。]
> gccsense – 好主意(使用gcc给你代码完成),但项目上的工作被放弃:(和版本是起来是beta质量
> xref in vim – xref是一个伟大的独立工具,并且非常适合解析C.它可以在vim与vxref工作,但是从我的经验,xref缺乏解析当前C代码和开发上已停止(以及开发vxref。)
> eclim – 似乎工作伟大的Java支持使用eclipse,极其缓慢,完全不可靠时解析C或C代码。通常发生的是一切都工作了很长时间,但然后突然,解析器停止解析你编写的任何新的代码,没有什么东西加载eclipse本身和迫使eclipse重新解析项目似乎有帮助。此外,更少的一个重要的事实,但更多的是一个烦恼是eclim接管处理错误,所以它纠正的方式vim通常解析错误从gcc意味着你没有访问quickfix列表是恼人的。
> netbeans jvi – 很多人发誓这样,但我有各种问题与jvi。我遇到的一个主要问题是jvi会说我在正常模式,但真的是在插入模式,没有什么不重启会有所帮助。
> eclipse viplugin / vrapper – 这开始看起来像最好的选择;每个都有自己的一套bug缺乏功能,但仍是最有吸引力,直到我发现可行,似乎是最稳定的,并有最多的功能。