Vim插件之vim-clang和clang complete

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Demorngel/article/details/73006631

在Vim所有的插件里面,YouCompleteMe 无疑是最强大的了,但安装也是异常的繁琐,在Windows平台上更加麻烦,下面介绍两个基于clang的插件可以部分替代YCM的功能(主要面向C家族)。

clang complete

首先介绍clang complete,YCM对C家族的补全就是基于它,功能之强大不用多提,使用它必须先下载安装LLVM并将其添加到系统环境变量中(下面提到的vim-clang插件也需要这么做),之后安装clang complete并写入下面的配置即可

"clang complete
"自动选择第一个匹配项但不插入到代码中
let g:clang_auto_select = 1
"在->. ., ::后自动补全
let g:clang_complete_auto = 1
"发现错误之后打开QuickFix窗口
let g:clang_complete_copen = 1
"高亮警告和错误
let g:clang_hl_errors = 1
"插入第一个补全后关闭预览窗口
let g:clang_close_preview = 1
"开启对C++11的编译支持
let g:clang_user_options = '-std=c++11'
"设定clang库路径
let g:clang_library_path = 'C:\Program Files (x86)\LLVM\bin'
"补全预处理指令,宏和常数,默认为0,不补全
let g:clang_complete_macros = 1
"补全代码模式,比如循环等,默认为0,不补全
let g:clang_complete_patterns = 1
"<C-]>跳转到声明
let g:clang_jumpto_declaration_key = "<C-]>"
"<C-w>]在预览窗口中打开声明
let g:clang_jumpto_declaration_in_preview_key = "<C-w>]"
"<C-t>回跳
let g:clang_jumpto_back_key = "<C-t>"
"使用UltiSnips进行代码片段补全
let g:clang_snippets = 1
let g:clang_snippets_engine = 'ultisnips'

上面设定的clang库路径,请根据你的电脑上llvm安装的位置进行修改,另外这个插件与Vim自带的Omni completion有冲突,要使用它必须关闭Omni completion。

vim-clang

vim-clang是在clang complete的启发下开发的,主要特点是补全速度快,支持格式化代码,配置如下

"vim-clang
"开启对C11和C++11的支持
let g:clang_c_options = '-std=gnu11'
let g:clang_cpp_options = '-std=c++11 -stdlib=libc++'
"关闭语法检查
let g:clang_check_syntax_auto = 0
"不要自动格式化代码
let g:clang_format_auto = 0
"代码格式化风格选项依次有LLVM,Google,Chromium,Mozilla,WebKit
"let g:clang_format_style = 'LLVM'
"使得vim-clang的补全与其他IDE一致
let g:clang_cpp_completeopt = 'longest,menuone,preview'

Vim自带的补全

当然,你想简单一点也可以使用Vim自带的补全,具体见下表

按键 补全对象
Ctrl-X Ctrl-F 文件名
Ctrl-X Ctrl-L 整行
Ctrl-X Ctrl-D 宏定义 (包括包含文件里的)
Ctrl-X Ctrl-I 当前文件以及所包含的文件
Ctrl-X Ctrl-K 字典文件内的单词
Ctrl-X Ctrl-T 同义词词典文件内的单词
Ctrl-X Ctrl-] 标签
Ctrl-X Ctrl-V Vim命令行
Ctrl-X Ctrl-O 使用Vim自带的Omni completion
Ctrl-N 下一个匹配项
Ctrl-P 上一个匹配项
Ctrl-A 重复上一次插入的文本

猜你喜欢

转载自blog.csdn.net/Demorngel/article/details/73006631