vim插件配置2--YouCompleteMe

自动补全插件 YouCompleteMe 简介

YouCompleteMe是一种代码自动补全插件. 代码补全功能在Vim发展史上是一个比较弱的功能, 因此一直被使用Source Insight的人诟病. 早些年出现的自动补全插件如 AutoComplPop, Omnicppcomplete, Neocomplcache等在效率上低得惊人, 特别是把整个Linux内核代码添加到工程时, 要使用这些代码补全功能, 每次都需要等待1~2分钟的时间, 简直让人抓狂.

YouCompleteMe 插件是最近几年才出现的新插件, 它利用clang为C/C++代码提供代码提示和补全功能. 借助clang的强大功能, YouCompleteMe的补全效率和准确率极高, 可以和Source Insight一比高下. 因此, Linux开发人员在Vim配备了YouCompleteMe插件之后完全可以抛弃Source Insight.

在安装YouCompleteMe插件之前, 需要保证Vim的版本必须高于7.4.1578, 并且支持Python2或者Python3

检查vim的版本

[me@fedora ~]$ vim --version
VIM - Vi IMproved 8.1 (2018 May 18, compiled Aug 13 2018 13:12:53)
Included patches: 1-279
Modified by <bugzilla@redhat.com>
... 
#省略很多输出...

在~/.vimrc中添加YouCompleteMe

这里的例子中, 用的是vim-plug插件
(见 vim插件配置1–插件管理器)

Plug 'ycm-core/YouCompleteMe'

然后重启vim, 并输入命令 “:PlugInstall” 来完成安装, 这个过程会从网络下载代码, 而且YouCompleteMe代码很大, 而境外的github有比较慢, 因此下载可能会持续很长时间.

编译YouCompleteMe

插件安装完成之后, 需要重新编译它, 在编译前需要保证已经安装了如下编译工具包:

$ sudo  apt-get  install  build-essential  cmake  python-dev  python3-dev

接下来进入YouCompleteMe插件代码的编译

[me@fedora ~]$ cd ~/.vim/plugged/YouCompleteMe/
[me@fedora YouCompleteMe]$ ./install.py  --clang-completer 
# --clang-completer表示对C/C++的支持

编译后的配置

编译完成之后, 还需要做一些配置工作.
首先, 把文件 ~/.vim/plugged/YouCompleteMe/third_party/ycmd/examples/.ycm_extra_conf.py 拷贝到 ~/.vim 目录下

[me@fedora YouCompleteMe]$ cp ~/.vim/plugged/YouCompleteMe/third_party/ycmd/examples/.ycm_extra_conf.py  ~/.vim/

然后, 在~/.vimrc中做些YouCompleteMe的设置:

其中, 这两个比较关键:

let g:ycm_server_python_interpreter = '/usr/bin/python3'
let g:ycm_global_ycm_extra_conf = '~/.vim/.ycm_extra_conf.py'

我自己这的配置如下:


"YouCompleteMe {
let g:ycm_server_python_interpreter = '/usr/bin/python3'
let g:ycm_global_ycm_extra_conf = '~/.vim/.ycm_extra_conf.py'
let g:ycm_auto_trigger = 0                                      "default is 1
"let g:ycm_min_num_of_chars_for_completion = 2                  "default is 2
"let g:ycm_key_invoke_completion = '<C-Space>'                  "default is '<C-Space>'
"let g:ycm_key_list_stop_completion = ['<C-y>']                 "default is '<C-y>'
"let g:ycm_key_list_select_completion = ['<TAB>', '<Down>']     "default is '<TAB>', '<Down>'
"let g:ycm_key_list_previous_completion = ['<S-TAB>', '<Up>']   "default is '<S-TAB>', '<Up>'
let g:ycm_show_diagnostics_ui = 0                               "default is 1
"}
"

参考

本文很大部分是摘抄了 <<奔跑吧 Linux内核 入门篇>> 的相关章节.

ycm-core/YouCompleteMe

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值