YouCompleteMe号称vim最难安装的插件,是太低估它了,我觉得只是目前我遇到的最难安装的一个软件。

YouCompleteMe是用c++写的,要想补全c-family需要用clang编译。

clang是苹果基于llvm架构开发的编译器,具有强大的语义分析能力,在它没有出现之前,emacs和vim的自动补全烂了几十年,它的目标是超越gcc

而YouCompleteMe下层用c++写的用到了clang语义补全的引擎,上层用Python封装。想要安装它并非易事,涉及到很多底层的东西。

在这里我简单罗列出两种环境下的安装步骤:windows下gvim和linux下的vim

一、windows下:

1、安装gvim支持Python(vim --version,Python前面有+号,表示支持,如果没有需要自己编译安装对Python的支持。刚说了YouCompleteMe用Python封装,没有对Python的支持后面都会白做,一身冷汗。)

2、git到~/vimfiles/bundle/ 地址:https://github.com/Valloric/YouCompleteMe

3、git submodule update --init --recursive 更新库

4、安装cmake编译器

5、安装visual studio 2017勾选c++应用开发模块(因为会用到C++编译器,到时候会用vs来编译,记得选择高版本的vs,2013以下对clang不支持)

6、下载clang和llvm编译安装

7、cmake -G "Visual Studio 15 Win64" . d:/Vim/vimfiles/bundle/YouCompleteMe/third_party/ycmd/cpp -DPYTHON_LIBRARYD=d:/Python27/libs -DPYTHON_INCLUDE_DIR=d:/Python27/include(这个是不需要c-family补全的编译命令)

cmake -G "Visual Studio 15 Win64" -DPATH_TO_LLVM_ROOT=d:/llvm . d:/Vim/vimfiles/bundle/YouCompleteMe/third_party/ycmd/cpp -DPYTHON_LIBRARYD=d:/Python27/libs -DPYTHON_INCLUDE_DIR=d:/Python27/include(这个是需要c-family补全的编译命令)

8、python install.py --all

9、配置_vimrc

二、linux下:

上面四步一样

5、如果需要c-family补全就编译安装llvm和clang

6、./install.py --all

具体看https://github.com/Valloric/YouCompleteMe

另外gcc编译器需要4.9以上,4.8的自己重新编译安装。

-------------------------------------------------------------------------------------

windows下我的YCM并没有安装成功,有时间再看一下。

https://github.com/Vito-Yan/gvim

vim学习之安装YouCompleteMe的更多相关文章

  1. Vim和Neovim安装YouCompleteMe

    确定支持Python,Vim一般支持,Neovim默认不支持 Vim的就不介绍方法了,很多系统都不一样.Neovim添加Python支持 pip install setuptools pip inst ...

  2. vim的编译安装及其插件YouCompleteMe安装

    相关的环境: win 7 x64 vs2013 community python 2.7.10 AMD64 python 3.5 AMD64 LLVM 3.5 cmake 3.5   YouCompl ...

  3. vim安装YouCompleteMe 插件

    要安装YouCompleteMe ,vim须支持python.看是否支持,可以在vim中:version 查看, 如果python前有+号,就是支持,减号就是不支持. 如果不支持,需要以编译安装方式重 ...

  4. vim学习、各类插件配置与安装

    vim学习.各类插件配置与安装 vim 插件 配置 1. vim学习 vim基础学习:根据网上流行基础文章<简明Vim练级攻略>,进阶书籍<vim实用技巧>.注:进阶书籍可以在 ...

  5. 解决安装YouCompleteMe与Vim版本不兼容问题

    用vim 7.4.4版本装YouCompleMe的时候提示这样的信息: YouCompleteMe unavailable: requires Vim 7.4.1578+.明明版本比它要求的还高,居然 ...

  6. vim学习、各类插件配置与安装【转】

    转自:https://www.cnblogs.com/forest-wow/p/6916531.html 1. vim学习 vim基础学习:根据网上流行基础文章<简明Vim练级攻略>,进阶 ...

  7. Vim使用Vundle安装代码补全插件(YouCompleteMe)

    安装 Vundle 它的使用方法很简单,安装一个插件只需要在 ~/.vimrc 按照规则中添加 Plugin 的名称,某些需要添加路径,之后在 Vim 中使用:PluginInstall既可以自动化安 ...

  8. 给vim安装YouCompleteMe

    要安装YouCompleteMe ,vim须支持python.看是否支持,可以在vim中:version 查看, 如果python前有+号,就是支持,减号就是不支持. 如果不支持,需要以编译安装方式重 ...

  9. Linux c++ vim环境搭建系列(3)——Ubuntu18.04.4编译安装youcompleteme

    3. youcompleteme编译安装 参考网址: https://github.com/ycm-core/YouCompleteMe#linux-64-bit 建议不要用这个博客的方法: http ...

随机推荐

  1. 【CF997E】Good Subsegments (线段树+单调栈)

    Description 原题链接 给你一个长度为\(n\)的排列\(~P\),定义一段子区间是好的,当且仅当这个子区间内的值构成了连续的一段.例如对于排列\(\{1,3,2 \}\),\([1, 1] ...

  2. css元素溢出

    当子元素的尺寸超过父元素的尺寸时,需要设置父元素显示溢出的子元素的方式,设置的方法是通过overflow属性来设置. overflow的设置项: 1.visible 默认值.内容不会被修剪,会呈现在元 ...

  3. linux中,使用cat、head、tail命令显示文件指定行

    小文件可以用cat(也可以用head.tail) 显示文件最后20行:cat err.log | tail -n 20 显示文件前面20行:cat err.log | head -n 20 从20行开 ...

  4. Python数据结构之实现队列

    再学习数据结构队列的时候,我不想讲太多!一切言语不如几张图来的实在! 这是第一张图,第二图是讲队列满的情况: 分析了数据结构中的队列是什么之后,我们开始写代码,代码Code如下: #coding:ut ...

  5. webpack入门(四)webpack的api 2 module

    接着介绍webpack的module. module Options affecting the normal modules (NormalModuleFactory)  这些选项影响普通的模块 m ...

  6. log.error("异常:", e);与log.error(e.getMessage());区别

    转: log.error("异常:", e);与log.error(e.getMessage());区别 2017年04月28日 14:51:32 行走的soong 阅读数:120 ...

  7. 关于递推算法求解约瑟夫环问题P(n,m,k,s)

    一. 问题描述 已知n个人,分别以编号1,2,3,...,n表示,围坐在一张圆桌周围.从编号为k的人开始报数1,数到m的那个人出列:他的下一个人又从1开始报数,数到m的那个人又出列:依此规律重复下去, ...

  8. bzoj2004 矩阵快速幂优化状压dp

    https://www.lydsy.com/JudgeOnline/problem.php?id=2004 以前只会状压dp和矩阵快速幂dp,没想到一道题还能组合起来一起用,算法竞赛真是奥妙重重 小Z ...

  9. nlp知识

    1.词集模型 将每个词的出现与否作为一个特征,不考虑词频.也就是一个词在文本在文本中出现1次和多次特征处理是一样的. 2.词袋模型 与词集相比,会考虑词频 sklearn中 CountVectoriz ...

  10. 20165232 学习基础和c语言基础调查

    做中学读后感 学习是要思考的,仅仅实践是不够的: 不光会动手,还要理解背后的原理 不光会用工具,还要理解支撑的理论 技能是分层次的: 一项技能的掌握程度分为:新手/高级初学者/合格者/精通/专家 对技 ...