Vim+Vundle+YouCompleteMe

准备
(1) YouCompleteMe插件要求Vim 版本在7.3.584及以上,而Ubuntu12.04源中的Vim已经比较老了,所以需要编译源码手动更新VIM的版本。
(2)Vundle 是一个新生代vim插件管理器,使用git进行插件安装和更新。插件管理器的好处是:使用简单,自动化管理vim的插件。让你的.vim文件夹远离混乱不堪的窘境,从此一手.vimrc走天下。
(3)Clang+ LLVM是Apple公司资助的一个项目,YouCompleteMe精确的补全功能完全依赖于Clang的代码解析。我们需要安装好Clang 3.2+以便为YCM提供支持。
(4)SVN和Git。用于从代码库中检出源代码。在Ubuntu下这两个软件的安装都非常简单,使用apt-get命令即可安装完成。
(5)YouCompleteMe和Syntastic 这两个插件都是配合使用的。YCM不用再说,Syntastic用于源码的实时检查。具体效果如同Eclipse一样,在代码编写的过程中即可实时报告语法错误。

1. 编译源码更新VIM
     First, install all the prerequisite libraries, including Mercurial. For a Debian-like Linux distribution like Ubuntu, that would be the following:
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 mercurial
Remove vim if you have it already,
sudo apt-get remove vim vim-runtime gvim   #这一步可以不做
On Ubuntu 12.04.2 you probably have to remove these packages as well,
sudo apt-get remove vim-tiny vim-common vim-gui-common #同上一条命令,这一步可以不做
     Once everything is installed, getting the source is easy. If you're not using vim 7.3, make sure to set the VIMRUNTIMEDIR variable correctly below (for instance, with vim 7.4a, use /usr/share/vim/vim74a):
cd ~/temp
hg clone https://code.google.com/p/vim/
cd vim
./configure --with-features=huge --enable-rubyinterp --enable-pythoninterp --with-python-config-dir=/usr/lib/python2.7-config \ 
--enable-perlinterp --enable-gui=gtk2 --enable-cscope --prefix=/usr
make VIMRUNTIMEDIR=/usr/share/vim/vim74
sudo make install
If you wish to support plugins that require Lua, y ou may also wish to add,
--enable-luainterp
     Set vim as your default editor with  update-alternatives ,
sudo update-alternatives --install /usr/bin/editor editor /usr/bin/vim 1
sudo update-alternatives --set editor /usr/bin/vim
sudo update-alternatives --install /usr/bin/vi vi /usr/bin/vim 1
sudo update-alternatives --set vi /usr/bin/vim
     Double check that you are in fact running the new Vim binary by looking at the output of  vim --version.


2. 安装Vundle
(1)安装Vundle         
          Vundle托管在Github上,下载Vundle需要使用到git来检出源代码,
git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
以上命令直接将源代码检出到了~/.vim/bundle/vundle这个目录下。 下载完了vundle后,需要配置.vimrc文件,我的配置如下(摘自github),
Vim+Vundle+YouCompleteMe_第1张图片
配置中每个Bundle声明一个要用Vundle安装的插件。当需要的vim插件托管在Github上,例如, 可写成Bundle 'scrooloose/syntastic';当插件在 www.vim.org 上面时,我们需要写明该插件的名称,还要加上 .vim扩展名 ,否则vundle无法更新该插件。基本上这两种情况可以满足我们大部分人的需要了。
(2)Vundle的使用——安装/卸载插件
          打开一个vim窗口,执行命令:BundleInstall,接下来Vundle会自动去网上下载.vimrc里用Bundle声明的插件,并把能安装的都安装好(安装到bundle文件夹下),在此过程中,Vundle还会自动执行:helptags命令,因此我们可以直接在vim中查看插件的帮助文档。要删除一个插件也很简单,先在~/.vimrc中移除该插件的Bundle声明,然后进入vim执行命令:BundleClean,Vundle将自动清除bundle文件夹下的该插件。

3. 安装YouCompleteMe
使用Vundle安装
     按照上图中的配置——在.vimrc中加入 Bundle 'Valloric/YouCompleteMe' ,保存退出,执行,
vim
:BundleInstall
这样Vundle就会自动去下载并安装.vimrc中Bundle声明的插件(除非已安装)。

4. 配置YouCompleteMe
         安装好之后,首先需要做配置,
cd ~/.vim/bundle/YouCompleteMe
./install.sh --clang-completer         
 这个过程会自动安装clang,从而在 ~/pxf/.vim/bundle/YouCompleteMe/python目录下产生libclang.so文件。  
          在.vimrc中配置,
""""""""""""""""""""""""""""""
" ycm setting
""""""""""""""""""""""""""""""
let g:ycm_global_ycm_extra_conf='~/.ycm_extra_conf.py'
let g:ycm_collect_identifiers_from_tag_files = 1
let g:ycm_seed_identifiers_with_syntax = 1
let g:ycm_confirm_extra_conf=0
let g:ycm_key_invoke_completion = ''
nnoremap :YcmForceCompileAndDiagnostics
其中ycm_global_ycm_extra_conf非常重要,里面设定ycm的搜索头文件路径。 .ycm_extra_conf.py文件可以针对具体的代码工程建一个,如果不这么做,那么vim会按照.vimrc中设定的路径去找 .ycm_extra_conf.py。在这里,我将模板 ~/.vim/bundle/YouCompleteMe/cpp/ycm/.ycm_extra_conf.py 拷贝一份到 ~/.ycm_extra_conf.py ,日后自己的修改都在拷贝的文件中进行。
          实际使用中,我们需要配置~/.ycm_extra_conf.py 这个文件, 需要做改动的就是文件中的flags部分——添加我们的库文件,从而提供给ycm做自动补全。使用-isystem标志添加系统的头文件进行解析,而-I标志用于添加第三方的头文件进行解析,一般要在该文件中的 flags = [ 后面添加  '-isystem','/usr/include', 。但是模板中已经有了该配置,所以就没做改动。

Trouble Shooting
          安装YCM的过程挺坎坷的,我也试过编译YCM源码的形式来安装,但安装好了却没有效果,下面是我在这个过程中碰到的一些问题,及其解决方案。
          在cmake配置的时候, 可能会遇到找不到PythonLibs的报错 ,这是因为没有安装python-dev,解决方案:
sudo apt-get install python-dev
         编译llvm-clang源码的时候, 很容易出错,我采用了另一种方法:
sudo apt-get install clang-3.3 clang-3.3-doc

你可能感兴趣的:(Linux)