最近在使用linux操作系统,不可避免的使用vim,而单独使用vim需要一段时间才能熟悉过来,给vim装上一些插件可以为文本编辑带来极大的方便。vim插件中,YouCompleteMe绝对可以算是最难安装的插件之一。我大概捣鼓了两三天才弄好,写一篇博客记录我安装的过程。
我使用Vundle来管理vim插件,许多插件用Vundle来下载很好用,直接在打开.vimrc的时候输入:PluginInstall即可,但是在下载YouCompleteMe和ultisnips的时候频繁出错。ultisnips碰到的问题和解决方案已经在前面的博客写过了,就不再说了。
想要安装好YouCompleteMe,需要做的准备工作很多,我大概列一下,也只能是把我碰到的列出来。
所需工具 | 对应版本 |
---|---|
系统 | 阿里云centos7.6 |
vim版本 | vim8.1(因为我在安装其他插件的时候需要对vim进行升级,所以我进行了更新) |
python | python2.7.5(系统自带)、python3.6.5(自己安装的) |
cmake版本 | cmake3.15 |
clang | clang8.0 |
使用cmake的原因就是clang需要使用cmake来编译,原来的clang使用的configure编译已经不能使用。而cmake和clang我的云服务器上都没有,所以我是现下载,现编译安装。
步骤太多,写在另一篇博客里面,链接。安装python3其实在安装YouCompleteMe插件的时候不是必要的,只需要系统原来安装的python2.7足够了。
步骤太多,写在另一篇博客里面,链接
步骤太多,也写在另一篇博客里面,链接。安装llvm+clang是为了能够使用插件支持c家族语言代码补全,不是一个必要的步骤。
github下载地址。从github上面下载插件,插件特别大,需要耐心等待。也可以使用如下命令直接下载(下载到go模块的时候经常出现错误,应该是有个网址无法访问,最好在一个能的网络中下载或者使用海外服务器下载)
git clone --recursive https://github.com/ycm-core/YouCompleteMe.git
加上–recursive可以递归检查每一个子模块,如果不加需要使用下面的命令来检查,效果是一样的.
git submodule update --init --recursive
只要能下下来,接下来就很简单了。
./install.py --clang-completer --gocode-completer
如果配置go出错,可以先去掉–gocode-completer。等编译完成后
cd ~/.vim/bundle/YouCompleteMe/third_party/ycmd/third_party/go/src/golang.org/x/tools/cmd/gopls
export GOPROXY=https://goproxy.io
go build # 系统中要先安装好GO
解决。
let g:ycm_global_ycm_extra_conf='~/.vim/bundle/YouCompleteMe/third_party/ycmd/examples/.ycm_extra_conf.py' "设置全局配置文件的路径
let g:ycm_seed_identifiers_with_syntax=1 " 语法关键字补全
let g:ycm_confirm_extra_conf=0 " 打开vim时不再询问是否加载ycm_extra_conf.py配置
let g:ycm_key_invoke_completion = '' " ctrl + a 触发补全
set completeopt=longest,menu "让Vim的补全菜单行为与一般IDE一致(参考VimTip1228)
let g:ycm_complete_in_comments = 1 " 在注释中输入也能补全
let g:ycm_complete_in_strings = 1 " 在字符串中也能补全
let g:ycm_semantic_triggers = {
\ 'c' : ['->', ' ', '.', ' ', '(', '[', '&'],
\ 'cpp,objcpp' : ['->', '.', ' ', '(', '[', '&', '::'],
\ 'perl' : ['->', '::', ' '],
\ 'php' : ['->', '::', '.'],
\ 'cs,java,javascript,d,vim,python,perl6,scala,vb,elixir,go' : ['.'],
\ 'ruby' : ['.', '::'],
\ 'lua' : ['.', ':']
\ }
我发现好多博客都说 g:ycm_global_ycm_extra_conf的值要选择~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py这个文件,但是我没有找到,我在example文件夹下找到了,并且里面的内容指向的也是c和c++头文件的正确位置,在进行c和c++语法补全的时候也是对的。
个人使用感受:ycm对c、c++、和python的代码提示挺好的,但是我觉得对其他语言的代码提示也不是太好(有可能是我没有设置好)
还有很多优秀的vim插件,使用这些插件可以提高我们的编码效率。例如NerdTree、ctags等等,这些插件都可以使用Vundle下载,比下载YouCompleteMe方便多了。
文中都是我个人的理解,如有错误的地方欢迎下方评论告诉我,我及时更正,大家共同进步