Ubuntu 14.04 下安装YouCompleteMe

由于将要使用Linux环境编程,因此找到了一款自动补全神器:YouCompleteMe。安装使用的过程中遇到了很多问题,因此在此记录下最后的操作,以便重复。


对最后的结果,预期要求是能够在console的字符界面下直接使用vim进行方便的编程。

一、 安装符合要求的Vim

1、检查Vim

   当前的Vim可以通过以下方式检查是否符合要求(版本要求Vim 7.3.584,以及对Python支持的要求):

       $vim --version

       得到的结果好长好长,只看第一行,例如我的就是:

              VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jun 28 2015 01:07:27)

        Vim的版本是7.4

        YouCompleteMe要求的最低版本是Vim 7.3.584,这个要求一般能达到。

        第二个要求只要在Vim中支持Python,运行命令:

        $vim --version | grep python

        得到的结果里如果有  +python,而非  -python, 那么就符合要求了。

2、安装Vim

         如果Vim不符合要求,那么只有自己搞了,例如我。主要参考YCM(YouCompleteMe的缩写)的Guide:

                        https://github.com/Valloric/YouCompleteMe/wiki/Building-Vim-from-source

         最容易出问题的是文中的以下命令:

./configure --with-features=huge \
            --enable-multibyte \
            --enable-rubyinterp \
            --enable-pythoninterp \
            --with-python-config-dir=/usr/lib/python2.7/config \
            --enable-perlinterp \
            --enable-luainterp \
            --enable-gui=gtk2 --enable-cscope --prefix=/usr
make VIMRUNTIMEDIR=/usr/share/vim/vim74
           其中的:
--with-python-config-dir=/usr/lib/python2.7/config
           目录需要修改成当前的python目录,我的是:/usr/lib/python2.7/config-x86_64-linux-gnu/ 或者/usr/lib/python3/config...根据python 的版本变化。

            这一点作者在最后才提了一句,我就被坑的再编译了一次vim。

            该文章的最后提了很多注意点,在参考的时候不要一步步跟着做,先看完先。

          

            如果之前安装过vim,需要卸了再用这个方法编译,那么生成的新vim的程序所在目录有可能会在/usr/local/vim里面,使得无法直接调用。可以通过将vim链接到/usr/bin或者将/usr/loca/bin加入path。

            最后一步是重复1、检查vim是否符合要求。


二、使用Vundle安装YCM。

1、安装Vundle

           参考网址  https://github.com/gmarik/Vundle.vim

           只有两步:安装、配置

           安装:

               $ git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim

           这个命令将自动把vundle下载到~/.vim文件夹中

          配置:

           配置.vimrc文件。

           这个文件是vim的配置文件,修改它使得vim与vundle能被vim找到。

           参考网址给出的一个配置文件,将Plugin那一块中除了:

Plugin 'gmarik/Vundle.vim'
            以外的全部都删除(因为都是示例,有些并不能使用)。

            如果以后需要从git上添加插件,就在这一块加上Plugin "xxx" 其中xxx就是该插件的git网址的末尾部分,参考:

                    https://github.com/gmarik/Vundle.vim   =>     "gmarik/Vundle.vim"


 2、安装YCM

           在Plugin块增加Plugin "Valloric/YouCompleteMe"。

           打开vim,输入:

                          :PluginInstall

            开始安装。YCM的安装时间较长,耐心的等待。

          安装完毕后还不能直接使用,需要为其编译运行时的库。

          到http://llvm.org/releases/download.html 下载与系统对应的pre-build binary,例如Ubuntu 14.04 就用Clang for x86_64 Ubuntu 14.04 (.sig),然后按照https://github.com/Valloric/YouCompleteMe#installation的 Full Installation Guide,操作,具体如下:

           解压.tar.xz(可能不是这个后缀,那么就去搜一搜怎么解压)

                   第一: $xz -d xxx.tar.xz

                   第二:¥tar xvf xxx.tar

           至此,得到一个文件夹:clang......

           编译需要python-dev 的支持

                    $sudo apt-get install python-dev

           在主目录建立文件夹:ycm_temp以及下属文件夹:ycm_temp/llvm_root_dir

           将clang...中的所有子文件夹(bin,lib 等等)移动到ycm_temp/llvm_root_dir中。

           然后在主目录建立一个文件夹并进入进行编译:

$ cd ~
$ mkdir ycm_build
$ cd ycm_build
$ cmake -G "Unix Makefiles" -DPATH_TO_LLVM_ROOT=~/ycm_temp/llvm_root_dir . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
$ cmake --build . --target ycm_support_libs --config Release
           至此,YCM主体安装完成,但是使用起来还有很多不便之处,需要为每种语言配置文件。因此需要安装接下来的工具

3、安装rdnetto/YCM-Generator

           YCM需要每位一个工程配置自己的配置文件,rdnetto/YCM-Generator就是用来自动生成配置文件的。

          安装使用Vundle,在.vimrc文件的Plugin块中加入  

                       Plugin  “rdnetto/YCM-Generator”

          然后在Vim中输入

                      :PluginInstall

           安装就完成了。

           使用时,如果需要为某工程设置配置文件,如果工程目录为  $DIR,并且makefile也在这个目录下,那么在 目录 ~/.vim/bundle/YCM-Generator/ 下有个config_gen.py,运行

                            $ ./config_gen.py   $DIR

           如果安装了相应的库,那么就搞定配置了,否则会提醒你安装相应库,按照指示安装即可。


三、使用YCM

         默认情况下,YCM需要使用者按下Ctrl + Space才会开启跨文件的语义匹配。例如我在      test.h  中定义了函数  Foo() , 那么在 main.c 中,我输入了Fo之后,YCM并不会匹配到Foo,只有按下Ctrl + Space才会开启匹配。

          如果嫌麻烦,可以在.vimrc文件末尾添加如下内容

let g:ycm_semantic_triggers = {}
let g:ycm_semantic_triggers.c = ['->', '.', ' ', '(', '[', '&']

         这样基本任何一个操作都会引发一个匹配,然而也会导致满屏幕都被匹配弹窗占领。所以选择看个人吧。

         

      

  



          

       



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值