YCM的安装与配置

花了好几天的时间,总算把YCM装上了。期间遇到了各类问题,主要仍是由于刚进linux,对linux环境不熟, 命令资料等查了半天。固然,YCM也广泛被认为是一种安装配置复杂,但使用起来超简单的插件。html

 

好,废话很少说。开始干活。(英语好的请无视后面内容,直接狂戳它:https://github.com/Valloric/YouCompleteMe,YCM在git的上主页,详细介绍了如何安装配置YCM。遗憾的是,我彻底按git教程的步骤没成功,还得作一点点小修改,我总结到了最后面。)python

 

第一步,安装带python选项的vimlinux

 

YCM须要VIM7.3.584以上且支持python。Ubuntu中是VIM7.4但没有python。查看你的vim是否支持python,运行命令:vim --version。若是出现+python,则表示支持。若是是-python,抱歉,可能你得从源码编译安装了。c++

 

1. 编译Vim以前,须要下载编译的相关工具和一些库(都要下载安装好,否则后面可能会出现问题)git

sudo apt-get install libncurses5-dev libgnome2-dev libgnomeui-dev libgtk2.0-dev libatk1.0-dev libbonoboui2-dev libcairo2-dev libx11-dev libxpm-dev libxt-dev python-dev ruby-dev mercurialgithub

 

2. 用apt-get卸载以前的vim。ubuntu

 

3. 下载新版本vim7.4源码,网址为:(ftp://ftp.vim.org/pub/vim/unix/vim-7.4.tar.bz2)vim

tar -xjvf vim-7.4.tar.bz2ruby

解压至 ~/downloads/vim74/python2.7

 

4. cd ~/downloads/vim74/

设置Vim源码的编译属性

./configure --with-features=huge --enable-pythoninterp --with-python-config-dir=/usr/lib/python2.7/config  --enable-cscope --enable-multibyte --prefix=/usr

须要从新配置可 输入 make distclean #清理一下上一次编译生成的全部文件。

其中参数说明以下:

  • --with-features=huge:支持最大特性
  • --enable-pythoninterp:启用Vim对python编写的插件的支持
  • --enable-multibyte:多字节支持 能够在Vim中输入中文
  • --enable-cscope:Vim对cscope支持
  • --with-python-config-dir=/usr/lib/python2.7/config-i386-linux-gnu/ 指定 python 路径
  • --prefix=/usr:编译安装路径

这里值得注意的是,你在第一步时必定要先安装好python-dev。否则后面make install 后虽然成功了,可是vim --version后仍是会出现-python。这里的关键在于/usr/lib64/python2.6/config中要用config.c这个文件,若是你没安好python-dev的话就没这个文件。(我掉到这坑爬了很久才出来。。因此第一步仍是很重要的)

sudo make VIMRUNTIMEDIR=/usr/share/vim/vim74

sudo make install

 

第二步,编译安装llvm-clang(若是你不须要ycm支持C/C++语义补全。  直接到下一步)

按照git中的教程,有两种方法,一种是下载现成编译好的二进制代码,问题是给出的连接中只有有限版本的二进制包,如CentOS就没有,并且llvm-clang3.3+ 的只有Ubuntu64位,没有32位的。第二种方法是下载源码包,自行编译。听说编译时间暴慢,我还没试过,下次在CentOS下是成功了再写上来。

 

我为了省事,下了个llvm-clang3.2  Ubuntu12.04 32位已编译好的二进制包,但个人Ubuntu 14.04 32位的,大家根据本身系统看着办吧,若是是CentOS可能就得本身编译安装了。

 

下好后解压到~/ycm_tmp

mkdir ~/ycm_tmp

tar -xvf  clang陛3.2-x86-linux-ubuntu-12.04.tar.gz

 

第三步,利用Vundle下好YouCompleteMe

Vundle是个vim插件管理器。

在装好Vundle后,在你的.vimrc中里面添加

 

Plugin 'Valloric/YouCompleteMe'

 

以后退出.vimrc, 在打开vim运行:

BundleInstall 

 

这里Vundle可能会运行比较久,由于YCM相对于其它插件仍是比较大的Give it time(我大概用了半个小时,-.-||)。

 

以后在你的Vundle文件下就有会YouCompleteMe文件夹了。

 

第四步,编译YouCompleteMe

 

1. 首先要安装好cmake,由于YCM须要用到

sudo apt-get install cmake

2. 建好文件夹ycm_build,进入(待会这个文件夹ycm_build存放cmake时产生的文件, 名字必须为ycm_build,后面若是你要用自带的.ycm_extra_config.py的话)

cd ~
mkdir ycm_build
cd ycm_build

 3. 若是你不须要ycm支持C/C++语义补全,以下(注意中间有个点 "." 表明当前目录):

cmake -G "Unix Makefiles" . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
make ycm_support_libs
 

   若是须要支持C/C++语义补全,以下:

cmake -G "Unix Makefiles"  -DEXTERNAL_LIBCLANG_PATH=~/ycm_tmp/clang+llvm-3.2-x86-linux-ubuntu-12.04/lib/libclang.so .   ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
make ycm_support_libs
 

 其中-DEXTERNAL_LIBCLANG_PATH就是第二步中你的llvm-clang 下的libclang.so文件。

 其实git教程中不是这样的,它只要llvm-clang根目录(也就是包含了include,lib,bin等文件的目录)就能够了。但我这样作虽然编译成功了,但仍是不能支持c/c++中的语义补全(如成员变量补全)。这个坑我又爬了大半天。。。

 git教程中的应该是这样(反正我这样作是没搞定。。 大家本身看着办):

cmake -G "Unix Makefiles"  -DEXTERNAL_LIBCLANG_PATH=~/ycm_tmp/clang+llvm-3.2-x86-linux-ubuntu-12.04/ .   ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
make ycm_support_libs

 

    到此为止,你的~/ycm_build中应该会出现一些文件和文件夹(以前是空目录)。说明ycm已经装好了,最后一步就是配置你的.vimrc啦!

  

第五步,配置YouCompleteMe

  YCM须要.ycm_extra_conf.py这个文件方能很好的工做。其实它已经存在啦,你将它拷贝到你的项目工程目录(或者更上层目录,这都无所谓,反正是递归查找,个人就直接拷到了~/下了)并作一丢丢修改就完成了!!

  cp ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py      ~/.ycm_extra_conf.py

 

  编辑~/.ycm_extra_conf.py

  在 flags中加入'-I' /usr/include/c++/4.8    和 '-I'  '/usr/include/i386-linux-gnu/c++/4.8'

  而后找到

try:
final_flags.remove( '-stdlib=libc++' )
except ValueError:
pass

  而且所有注释。

     最后一步,在你的.vimrc中加入这个.ycm_extra_conf.py文件在你系统中的路径。个人以下

 

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

  至此,大功告成!!打开你的vim试试效果吧。

 

 

附: 安装过程当中出现的问题与解决方案:

Q1: 源码编译安装支持python的vim失败。虽然编译安装成功了,可是在vim  --version中仍是出现了-python

A1: 查看你的/usr/lib64/python2.6/config(你对应的python目录),看看里面是否有config.c。若是没有,请sudo apt-get install python-dev。第一步中那一大堆软件仍是颇有必要装的.

Q2:利用Vundle下载YCM时迟迟没反应。

A2: 慢慢等吧。网速很差还可能下载失败。

Q3:YCM已经安装好了,可是没有语义补全功能。好比不能补全成员变量等。

A3:

  缘由1:在VIM中运行YcmDiags,看看有没有什么warn或error,个人就出现了bits/c++config.h can not found.

  运行命令 locate bit/c++config.h

  找到相应路径。编辑~/.ycm_extra_conf.py

  在 flags中加入响应路径。如个人就是: '-I' /usr/include/c++/4.8    和 '-I'  '/usr/include/i386-linux-gnu/c++/4.8'

  具体缘由请移步http://stackoverflow.com/questions/9201521/g-4-6-issue-no-bits-cconfig-h-file-as-required-by-the-header-cstring

 

  缘由2:

  在编译YCM的时候,是这样的(没有包含具体的libclang):

  cmake -G "Unix Makefiles"  -DEXTERNAL_LIBCLANG_PATH=~/ycm_tmp/clang+llvm-3.2-x86-linux-ubuntu-12.04/ .   ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp

 改成这样编译试试(注意应当把当前的ycm_build删除再新建一个空的)
  cmake -G "Unix Makefiles"  -DEXTERNAL_LIBCLANG_PATH=~/ycm_tmp/clang+llvm-3.2-x86-linux-ubuntu-12.04/lib/libclang.so .   ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
  

参考连接:

  http://www.cnblogs.com/zhongcq/p/3630047.html

  https://github.com/Valloric/YouCompleteMe

  http://www.cnblogs.com/csuftzzk/p/3435710.html

  http://www.cnblogs.com/weishun/p/tencent-shixi-2014-08-19-vimrc-youcompleteme.html

相关文章
相关标签/搜索