YouCompleteMe是一个功能极强的自动补全插件,安装这个插件折磨了我好久,找了很多博客查看都无果,最后还是感谢stack overflow。和其它的一些插件相比,YCM能够基于语法来给出相应的补全政策,而不是简单的通过文件的格式。运行效果的截图:

  我把安装的过程分为几下几步:

1. 找一个比较好用的基础的vim配置,或者原来你电脑上就有的配置也行。我使用的是https://github.com/ma6174/vim,提供一键安装的办法进行安装。运行wget -qO- https://raw.github.com/ma6174/vim/master/setup.sh | sh -x即可。

2.检查自身环境是否符合要求:

    • 首先是检查vim ,版本必须大于Vim 7.4.143,版本限制可能会更改,具体请查看git,检查版本信息通过vim --version。
    • 由于YCM上层封装使用的是python,所以还需要检查版本信息。python2或者python3都支持。同样的通过python --version查看。
    • 安装vundle,具体的安装过程见git,相当简单。
    • 安装Cmake,sudo apt-get install build-essential cmake。
    • 安装python,  sudo apt-get install python-dev python3-dev。
    • 完成上述步骤就可以开始检测clang,clang --version。现在YCM的版本需要Clang3.9的支持,如果系统版本小于3.9则可以通过apt进行更新,更新完成之后在/usr/bin下进行clang文件替换,替换成最新版本。
    • 接下来开始进行YouCompleteMe的安装:
      • 克隆git仓库:   在.vim/bundle/目录下进行克隆,命令如下:git clone https://github.com/Valloric/YouCompleteMe.git   完成之后会在此目录下生成YouCompleteMe文件
      • 进行安装:   在cd ~/.vim/bundle/YouCompleteMe目录下执行./install.py --clang-completer --system-libclang   使用本地libclang库进行安装,这个过程中如果系统clang库为更新可能出错。
      • 安装过程中会进行编译,时间估计比较长。
    • 最后一步,其实当初自己安装的时候开始的这几步都不怎么迷糊,但是这一步总是出错。最后是添加YouCompleteMe自动提示的数据源,我们需要在~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm这个目录下找到.ycm_extra_conf.py文件,并编辑这个文件在flags部分添加如下内容:

      '-isystem',
      '/usr/include/',
      '-isystem',
      '/usr/include/c++/',
      '-isystem',
      '/usr/include/x86_64-linux-gnu/c++',
      '-isystem',
      '/usr/local/include/', 这个具体根据自己的文件来决定,现在所有的配置都已经完成了,enjoy it!!!

vim配置----YouCompleteMe配置的更多相关文章

  1. 【实习记】2014-08-19升级vim配置YouCompleteMe并debug的过程+qtcreator有语言包没法换语言

        做了个小项目,有空闲可以做点事了. 偶然查资料看见YouCompleteMe的鼎鼎大名. 演示demo <img src="http://i.imgur.com/0OP4ood ...

  2. vim插件和配置

    vim插件和配置 插件 pathogen 可以方便地管理vim插件 在没有pathogen的情况下,vim插件的文件全部都放在.vim目录,卸载插件很麻烦,pathogen可以将不同的插件放在一个单独 ...

  3. Linux : Vim 使用与配置 (附 GitHub 自动化配置脚本)

    由于经常使用 vim 编辑配置文件,有时候也会进行使用vim 编写一些脚本和c/c++ 程序,所以配置一个常用的 vim 是很是必要的.这篇博文主要是记录vim使用和配置相关的一些知识点. 关于vim ...

  4. Mac vim“装逼”配置

    配置c++ 等编程语言补全等 from blog http://www.cnblogs.com/xiaobo-Linux/p/8909402.html 1. 安装 macvim brew instal ...

  5. vim的简单配置

    本文大部分内容转载自:https://blog.csdn.net/lhy2932226314/article/details/69668891 vim是从 vi 发展出来的一个文本编辑器.功能丰富,在 ...

  6. vim安装与配置

    vim 8.0 安装 git clone https://github.com/vim/vim.git sudo apt-get install libncurses5-dev  # vim依赖一个n ...

  7. Linux c++ vim环境搭建系列(4)——vim插件安装配置使用

    4. 插件 主要是c++相关的. ~/.vimrc文件在GitHub上有:https://github.com/whuwzp/vim_config 以下内容参考: https://github.com ...

  8. vim + ctags + taglist配置和使用

    vim +ctags + taglist ,ctags+cscope 安装配置和使用 内容:VIM下ctags和taglist的安装配置方法:一键安装 ctags和cscope的方法 :vim语法高亮 ...

  9. Linux中vim的简单配置

    本文主要分享Linux中vim的简单配置 ★配置文件的位置     在目录/etc.下面,有个名为vimrc的文件,这就是系统中公共的vim配置文件,对所有用户都开放.而在每个用户的主目录下,都可以自 ...

随机推荐

  1. 九度OJ 1003:A+B

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:15078 解决:6299 题目描述: 给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号","隔开. 现在请计 ...

  2. CrystalReport runtime的下载地址

    SAP网站的东西实在太多了,找个CrytalReport都费劲.13.*版的可以通过下面的地址下载: SAP Crystal Reports, developer version for Micros ...

  3. UVa 11586 - Train Tracks

    题目:给你一些积木碎片,每一个碎片的两端仅仅能是凸或凹(M或F).凸凹可拼起来.是否能拼成一个环. 分析:图论.欧拉回路.推断入度等于出度就可以,即M和F同样且大于1组. 说明:╮(╯▽╰)╭. #i ...

  4. 链表的C++实现

      有的时候,处于内存中的数据并非连续的.那么这时候.我们就须要在数据结构中加入一个属性.这个属性会记录以下一个数据的地址.有了这个地址之后.全部的数据就像一条链子一样串起来了,那么这个地址属性就起到 ...

  5. Java7、Java8 安装卸载问题

    win7 系统,同时安装了JDK7和JDK8,卸载了JDK8之后,cmd命令行输入:java -version ,本以为显示java版本1.7,结果弹错:has value '1.7',but '1. ...

  6. vs2012环境配置

    快捷键 css格式设置 字体设置 新建项目 项目创建失败? 更改默认开发语言环境 1.快捷键 代码格式化:Ctrl+K+D 2.css格式设置: 工具→选项→文本编辑器→CSS→格式设置→选择“紧凑模 ...

  7. 在js实现矩阵转置

    var arr=[[2,4,6,8],[8,9,0,-1],[9,6,2,1]]; //定义一个新的数组 var arr2=[]; for(var i=0;i<arr[0].length;i++ ...

  8. struts2的通配符与动态方法调用

    1.Action标签中的method属性 我们知道action默认的执行的方法是execute方法,但是一个action只执行一个方法我们觉得有点浪费,我们希望在一个action中实现同一模块的不同功 ...

  9. LinkedList_1.打印两个有序链表的公共部分

    思路: 实例化出两个链表($link_a, $link_b),比较连个链表当前元素的大小,谁小谁执行next()方法继续比较,当出现相当的时候把相等的值塞入数组$common里,当两个链表有一个元素比 ...

  10. LeetCode-5:Longest Palindromic Substring(最长回文子字符串)

    描述:给一个字符串s,查找它的最长的回文子串.s的长度不超过1000. Input: "babad" Output: "bab" Note: "aba ...