zoukankan      html  css  js  c++  java
  • YCM的安装与配置

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

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

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

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

    1. 编译Vim之前,需要下载编译的相关工具和一些库(都要下载安装好,不然后面可能会出现问题)

    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

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

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

    tar -xjvf vim-7.4.tar.bz2

    解压至 ~/downloads/vim74/

    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

  • 相关阅读:
    浙大数据结构课后习题 练习二 7-2 Reversing Linked List (25 分)
    浙大数据结构课后习题 练习二 7-2 一元多项式的乘法与加法运算 (20 分)
    浙大数据结构课后习题 练习一 7-1 Maximum Subsequence Sum (25 分)
    浙大数据结构课后习题 练习一 7-1 最大子列和问题 (20 分)
    PAT Basic 1019 数字黑洞 (20 分)
    PAT Basic 1017 A除以B (20 分)
    PAT Basic 1013 数素数 (20 分)
    PAT Basic 1007 素数对猜想 (20 分)
    PAT Basic 1003 我要通过! (20 分)
    自动化运维——HelloWorld(一)
  • 原文地址:https://www.cnblogs.com/lysuns/p/4222707.html
Copyright © 2011-2022 走看看