Vim安装YouCompleteMe插件

Vim安装YouCompleteMe插件

1.更新vim版本:

首先查看当前vim版本是否满足插件所需的最低版本,查看方法是按正常步骤下载vundle,尝试安装YouCompleteMe插件,如果不满足会给出版本过低的提示。或者执行vim –version查看版本号,在YouCompleteMe官网可以看到Make sure you have Vim 7.4.1578 with Python 2 or Python 3 support的警告,即必须是7.4.1578以上版本,且带有python支持(版本可能会变的,2017-11-10的时候是此版本),出现该提示则更新vim至最新版8.0.4,更新方法如下:

       (1)卸载原来的vim : yum remove vim –y(apt-get remove vim)

       (2)下载最新的vim : https://github.com/vim/vim.git

       (3)安装:./configure  --enable-pythoninterp=yes && make && make install

(--enable-pythoninterp=yes为开启python2支持(python3支持的可自行百度),否则vim总是报错:YouCompleteMe unavailable: requires Vim compiled with Python (2.6+ or 3.3+) support)


2.升级cmake和gcc:

因为安装clang3.9需要更高版本的cmake和gcc,因此必须升级。(版本合适可不用升级)

(1)去官方下载cmake(version > 3.2)  gcc(version > 4.8)安装后配置环境变量。(可以先尝试用旧版本安装,过程中报错再升级相关程序,不报错就正常安装)。

实际安装时,cmake升级至3.6.0,gcc升级至5.4.0

(2)安装gcc:参考https://www.cnblogs.com/Norlan/p/5196920.html,安装完成后要把原来的/usr/bin下的低版本的gcc、g++、cpp重命名。

(3)安装cmake:直接安装即可,下载源码执行:

./configure –prefix=yourpath && make && make install


3.安装llvm+clang:

       (1)YouCompleteMe 官网建议安装 Clang 3.8 以上的版本,实际选择3.9.1版本:具体安装过程可参考:http://www.cnblogs.com/codemood/p/3142848.html 或者官方网站:http://clang.llvm.org/

       如果更新过gcc至高版本,安装中可能会报错:version `GLIBCXX_3.4.21' not found。解决方法参考:http://blog.csdn.net/rznice/article/details/51090966

       注意:如果直接执cmake -G "Unix Makefiles" ../llvm-3.9.1.src 会导致产生大量的编译文件,多达9.4G,为了避免这样的空间浪费,加入两个cmake选项,最后执行的命令为:

cmake  -G   "Unix Makefiles"   -DLLVM_TARGETS_TO_BUILD="host"

-DCMAKE_BUILD_TYPE=Release   ../llvm-3.9.1.src

其中-DLLVM_TARGETS_TO_BUILD=”host”意味着只编译生成本平台的相应文件,-DCMAKE_BUILD_TYPE=Release表示编译生成release版本,默认的是debug版本,会产生大量的不需要的文件。


4.编译YCM:

(1)首先下载YouCompleteMe(https://github.com/Valloric/YouCompleteMe)至~/.vim/bundle/目录下,可以使用PluginInstall下载,也可以直接从git上下载:https://github.com/Valloric/YouCompleteMe

(2)下载成功后,在YouCompleteMe下执行:git submodule update --init –recursive,会下载一些第三方依赖库和相关文件。

(3)任意新建一个目录ycm_build(此目录用于cmake生成编译的中间文件,编译或安装成功后可以直接将此目录删除)进入目录执行:

cmake  -G  "Unix Makefiles"  -DUSE_SYSTEM_LIBCLANG=ON  .  

~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp(编译支持c和c++的命令补全,不需要可以不用编译这个)

(4)不出错然后继续执行:

cmake --build . --target ycm_core --config  Release

执行过程中可能出现:/usr/local/lib/libpython2.7.a: could not read symbols: Bad value错误,但是实际上是有/usr/local/lib/libpython2.7.a这个文件的,错误的原因是编译生成的.a文件格式不符合,重新编译python2.7并加入-fPIC选项即可解决此问题。即在python2.7的源码目录下执行安装三部曲,其中第一步修改为:

./configure –enable-shared –fPIC

编译成功则会在~/.vim/bundle/YouCompleteMe/third_party/ycmd下生成ycm_core.so文件。


5.配置.ycm_extra_conf.py:

.ycm_extra_conf.py文件是YCM的入口文件,启动vim的时候都会先查找这个文件。这个文件主要的意义在于,让clang能把当前的源码文件 "编译 " 通过. 因为YCM是基于语义补全的,会对.cpp进行语法分析和语义分析。于是就得告诉clang一些具体的编译参数(比较重要的是-I,得让clang知道去哪些目录下找头文件)。果clang不能正确的编译.cpp,那么很多补全的功能就失效了。

(1)编译成功后,将~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/. ycm_extra_conf.py  拷贝到~/ .ycm_extra_conf.py 拷贝过去后可以打开vim编写一个文件看看效果,已经有了一部分命令补全功能。还需要修改. ycm_extra_conf.py文件增强效果。

(2)修改.ycm_extra_conf.py文件,参考:

http://blog.csdn.net/mr_zing/article/details/44263385

(3)最后在~/.vimrc文件中加入如下几句:

let mapleader = ","

let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py'

let g:ycm_min_num_of_chars_for_completion=1

let g:ycm_seed_identifiers_with_syntax=1

let g:ycm_collect_identifiers_from_tag_files = 1

nnoremap <leader>jd :YcmCompleter GoToDefinitionElseDeclaration<CR>

set nocompatible

filetype off

set rtp+=~/.vim/bundle/Vundle.vim

call vundle#rc()

Bundle 'gmarik/Vundle.vim'

Bundle 'fatih/vim-go'

Bundle 'Valloric/YouCompleteMe' (Bundle即为安装的插件)

filetype plugin indent on

syntax on


6.其他实用插件

1.Nerdtree  

2.vim-airline

安装相比YCM简单的多,可自行google


参考文章:

http://www.cnblogs.com/lysuns/p/4222707.html

http://blog.csdn.net/u012675539/article/details/51489957

https://github.com/Valloric/YouCompleteMe#full-installation-guide

原文地址:https://www.cnblogs.com/deepllz/p/8892642.html