YouCompleteMe 完全安装
这次就决定按这个网页来安装吧,虽然是英文,努力看一下还是可以的
YCM的完全安装,指的应该就是c族(c/c++/object c等),以及下面的语言的完全支持
其中最麻烦的是c族支持的安装,官网要求使用clang,可以使用系统自带的,也可以使用自己编译的,当然强烈推荐的是下载官网编译好的二进制包,下面我是使用官网的二进制包进行的
其他语言的支持:
Java/Ruby eclim
Python jedi
Go Gocode gocode
C# OmniSharp
JavaScript Tern for Vim
首先提供一个完全安装的shell脚本,将其保存为ycm.sh然后执行sh ycm.sh 你的clang-llvm的解压目录(请使用绝对路径):
#!/bin/bash
cd ~
mkdir ycm_build
cd ycm_build
cmake -G "Unix Makefiles" -DPATH_TO_LLVM_ROOT=$1 . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
if [ $? -eq 0 ]; then
cmake --build . --target ycm_core --config Release
rm -rf ~/ycm_build
else
echo "cmake error"
fi
后面会提供一个我的**.ycm_extra_conf.py**配置文件,可以补全opencv等
安装
我的操作系统是arch,经过一天的安装失败安装失败安装失败之后终于成功了
-
安装支持python2或3的vim,vim版本要求最低7.3.598,各个linux发行版可以在从自己的软件仓库安装,推荐安装gvim,如果仓库版本太老,也可以自己下载源码编译安装
-
安装vundle,让后通过vundle来安装YCM,这个过程很慢,因为网速很慢,等几个小时吧
-
下面的步骤是支持c语义补全的步骤,如果不想进行c语义补全可以略过
下载最新版本的clang和llvm,推荐官方二进制libclang,我下载的是ubuntu14.04的二进制包,不推荐使用系统自带的,下载完成只有,我将二进制包解压到了~/Software/clang-llvm
文件夹下面了,注意,这个文件夹下面直接是lib|include
等文件夹。
接下来编译YCM需要的ycm_core
需要安装cmake
接下来进行编译,建立文件夹,临时的,完事后可以删除,名称必须是ycm_build
cd ~/
mkdir ycm_build
cd ycm_build
在ycm_build
目录下面执行下面的命令,生产mackefile文件
cmake -G "Unix Makefiles" -DPATH_TO_LLVM_ROOT=解压的clang的目录 .(here is a dot) ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
生成makefile文件之后执行下面的命令来生成libclang.so和ycm_core
cmake --build . --target ycm_core --config Release
在执行完cmake之后,YouCompleteMe/third_party/ycmd
目录下面应该会有libclang.[so|dylib|dll]文件以及ycm_core文件,这样就完成了.
接下来是配置文件YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py
最后在vimrc中添加
let g:ycm_global_ycm_extra_conf='~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'
这样就完成了,剩下的工作就是好好配置一下.ycm_extra_conf.py
文件了
打开vim,如果遇到问题,请看后面的问题解决
- 添加其他语言的支持
js
安装node.js npm,各发行版使用包管理器安装即可。
进入目录YouCompleteMe/third_party/ycmd/third_party/tern_runtime
,然后执行下面的命令
npm install --production
在你的js工程目录下建立.tern-project
文件,然后这个文件里面具体咋写我没看懂,英语实在是太差了
python
看你想要使用哪一个python解释器了,我电脑上有python2和python3,我暂时先使用python2,因为最近在使用python2学习django,配置如下,在.vimrc
中添加
let g:ycm_python_binary_path = '/usr/bin/python2.7'