新时代的Vim C++自动补全插件 clang_complete
Vimer的福音 新时代的Vim C++自动补全插件 clang_complete
使用vim的各位肯定尝试过各种各样的自动补全插件,比如说大名鼎鼎的 OmniCppComplete 。这一类的插件都是对 Ctags 生成的符号表进行字符串匹配来获得可能的补全项。他们在编写 C 代码的时候还是很好用的,但是到了 C++ 的环境情况就不同了,各种作用域的存在使得仅仅依靠符号表匹配的方式完全无法发挥作用。
比如我输入一个 SomeType 的对象 bar,然后我想得到成员变量 a 的提示,但是却没有任何事情发生:
struct SomeType { int a; };
void foo()
{
SomeType bar;
bar. // 咦。。。
}
有人会问:那像 Visual Studio 中的 IntelliSense 怎么会有那么好的补全功能呢?
这是因为它利用了微软的 CL 编译器的功能对代码进行语法分析,这样一来补全工具就知道了各个符号所表示的到底是函数还是类型还是变量,同时也知道了一个作用域里都有那些符号,那么在补全的时候就的心应手了。
然后有人又要问了:如果我们的插件也利用上编译器的语法分析功能那就不行了吗?
为了解决这一问题,我们首先可以想到的是利用大家所熟知的 GCC 。但是 GCC 对第三方应用的支持很差,没有直接的编程接口,一般的应用只能自己解析 GCC 生成的中间文件来获得所需的信息,这样的方式既费时又容易出错。
那有什么其他的替代方式呢?
接下来,我要隆重地介绍新时代的编译器 Clang,这个基于 LLVM 的编译器有着比 GCC 更快的编译速度和更人性化的错误提示,并且支持 C, C++, Objective-C 和 Objective-C++。更重要的是 Clang 提供了大量的 API 来供第三方应用调用,甚至直接就有获得自动补全提示的接口。
我们今天的主角 clang_complete 就是一款基于 Clang 的插件。
安装方法
安装前提
Vim 7.3 或更高版本
Clang 3.0 或更高版本
没有安装 OmniCppComplete
直接下载安装
$ vim clang_complete.vmb -c 'so %' -c 'q'
从 Github 获得并生成 (需要python)
$ git clone https://github.com/Rip-Rip/clang_complete.git
$ make
$ vim clang_complete.vmb -c 'so %' -c 'q'
使用方法
- 输入类名或命名空间接 :: 之后就会有域成员的提示
- 输入对象名接 . 之后会有成员符号的提示
- 输入对象指针接 -> 之后会有成员符号的提示
- 使用 Ctrl + N 强制打开补全列表
- 分别使用 Ctrl + N 和 Ctrl + P 来下翻和上翻

好了话不多说,装上插件好好地享受 coding 吧!
新时代的Vim C++自动补全插件 clang_complete的更多相关文章
- Vimer的福音 新时代的Vim C++自动补全插件 clang_complete
使用vim的各位肯定尝试过各种各样的自动补全插件,比如说大名鼎鼎的 OmniCppComplete .这一类的插件都是对 Ctags 生成的符号表进行字符串匹配来获得可能的补全项.他们在编写 C 代码 ...
- vim python自动补全插件:pydiction
vim python自动补全插件:pydiction 可以实现下面python代码的自动补全: 1.简单python关键词补全 2.python 函数补全带括号 3.python 模块补全 4.pyt ...
- vim中自动补全插件snipmate使用
vim中自动补全插件snipmate使用 1.下载snipMatezip:https://github.com/msanders/snipmate.vim/archive/master.zip 2.解 ...
- Linux VIM python 自动补全插件:pydiction
Pydiction 可以是我们使用Tab键自动补全Python代码在Vim,是一款非常不错的插件. Pydiction不需要安装,所有没有任何依赖包问题,Pydiction主要包含三个文件. pyth ...
- vim安装自动补全插件
1. 先安装Pathogen,以便后续的插件安装. 打开网址https://github.com/tpope/vim-pathogen可以查看具体安装方法. a.创建目标并安装: mkdir -p ~ ...
- fedora 20下安装vim的C++补全插件clang_complete
1.安装clang yum install clang 2.安装clang_complete插件 git clone https://github.com/Rip-Rip/clang_complete ...
- VIM自动补全插件 - YouCompleteMe--"大神级vim补全插件"
VIM自动补全插件 - YouCompleteMe 序言 vim 之所以被称为编辑器之神多半归功于其丰富的可DIY的灵活插件功能,( 例如vim下的这款神级般的代码补全插件YouCompleteMe) ...
- 【转】Vim自动补全插件----YouCompleteMe安装与配置
原文网址:http://www.cnblogs.com/zhongcq/p/3630047.html 使用Vim编写程序少不了使用自动补全插件,在Linux下有没有类似VS中的Visual Assis ...
- Vim自动补全插件----YouCompleteMe安装与配置
Vim自动补全插件----YouCompleteMe安装与配置 使用Vim编写程序少不了使用自动补全插件,在Linux下有没有类似VS中的Visual Assist X这么方便快捷的补全插件呢?以前用 ...
随机推荐
- C#将Word,Excel与Html,PDF互转
public class OfficeHelper { /// <summary> /// word转成html /// </summary> /// <param na ...
- std::move()
#include <iostream> #include <utility> #include <vector> #include <string> i ...
- Hadoop与HBase中遇到的问题(续)java.io.IOException: Non-increasing Bloom keys异常
在使用Bulkload向HBase导入数据中, 自己编写Map与使用KeyValueSortReducer生成HFile时, 出现了以下的异常: java.io.IOException: Non-in ...
- 详解linux vi命令用法
vi是所有UNIX系统都会提供的屏幕编辑器,它提供了一个视窗设备,通过它可以编辑文件.当然,对UNIX系统略有所知的人,或多或少都觉得vi超级难用,但vi是最基本的编辑器,所以希望读者能好好把它学起来 ...
- [ACM] hdu 1671 Phone List (特里)
Phone List Problem Description Given a list of phone numbers, determine if it is consistent in the s ...
- C语言库函数大全及应用实例一
原文:C语言库函数大全及应用实例一 [编程资料]C语言库函数大全及应用实例一 函数名: abort 功 能: 异常终止一个进程 用 法: ...
- log4e插件的安装和使用
1.首先下载log4e小工具.放入myeclipse10安装文件夹D:\Program Files (x86)\myEclipse10\MyEclipse Blue Edition 10\dropin ...
- 基于Bootstrap的Asp.net Mvc 分页
基于Bootstrap的Asp.net Mvc 分页的实现 最近写了一个mvc 的 分页,样式是基于 bootstrap 的 ,提供查询条件,不过可以自己写样式根据个人的喜好,以此分享一下.首先新建一 ...
- - C#编程大幅提高OUTLOOK的邮件搜索能力!
原文:[原创] - C#编程大幅提高OUTLOOK的邮件搜索能力! 使用OUTLOOK, 你有没有遇到过上图的问题? 多达18419封邮件! 太多了, 每次想找一个邮件都非常耗时, 想办法解决这个问题 ...
- 2.1 LINQ的查询表达式
在进行LINQ查询的编写之前,首先需要了解查询表达式.查询表达式是LINQ查询的基础,也是最常用的编写LINQ查询的方法. 查询表达式由查询关键字和对应的操作数组成的表达式整体.其中,查询关键字是常用 ...