这两天开始使用vim来学习C++语言,中间少不了要进行编译。才刚刚写了两个小例子就开始发现,每次都要退出vim来进行编译,实在太麻烦了。这时候才想到
之前有在一本关于vim的书籍上看到quickfix的介绍,当时因为没有需要,这部分并没有认真去看,现在既然用到了,那就开始好好研究你她的使用
    基本的使用方法就是配置makeprg,例如我想用g++来编译我的C++,我就可以进行如下配置 set makeprg=g++\ %\ -o\ %:r。这样就可以直接在我们vim中使用命令行make 来自动编译当前文件了。

折腾了两天,现在终于可以成功使用YCM了,现在记录下安装此插件的过程
        一、前提条件
            1.vim保证7.3以上
                ubuntu 下可以直接通过sudo apt-get install vim进行安装
            2.安装cmake
                CMake是一个比make更高级的编译配置工具,它可以根据不同平台、不同的编译器,生成相应的Makefile或者vcproj项目
                ubuntu 下可以通过sudo apt-get install cmake进行安装
        二、安装YCM插件
           1.直接添加 Bundle 'Valloric/YouCompleteMe' 到.vimrc中,然后运行BundleInstall

三、安装LLVM-Clang3.9、Clang 标准库
            1.clang
                Clang是一个C语言、C++、Objective-C、C++语言的轻量级编译器
                可以通过sudo apt-get install clang 进行安装
            2.llvm
                一种编译器构架系统

3.安装的话,直接下载预编译的文件,解压以后,然后拷贝到本地目录/usr/local/即可
                http://llvm.org/releases/download.html->Download LLVM 3.9.0->Pre-Built Binaries->Clang for x86_64 Ubuntu 16.04 (.sig)
            4.生成YCM需要的检索库
                因为我需要支持C、C++,所以编译过程如下
                1)cd ~; mkdir ycm_build; cd ycm_build
                2)步骤3中我们已经下载了clang+llvm的预编译文件,我们把它们解压到 ~/ycm_temp/llvm_root_dir
                3)执行如下命令 cmake -G "<generator>" -DPATH_TO_LLVM_ROOT=~/ycm_temp/llvm_root_dir . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
                4)cmake --build . --target ycm_core --config Release,她会在ycm下生成一个ycm_core.so

经过好几天的折腾,总算把YCM安装好了,虽然说它的具体作用还没有充分发掘,不过,从刚刚几次的牛刀小试来看,体验完全上了不止一个档次。唯一感觉遗憾的是,对java的支持不好,如果java也能做到如此只能联想,那就爽爆了。
    经过这件事,有一点感触非常的深,那就是我们总是能碰到奇奇怪怪的问题,碰到这些问题的时候,一定不要灰心放弃,努力尝试各种方案,静下心来研究整合,总会把问题解决的。再者,也不要完全依赖网络上现成的解决办法,机械的尝试,不如静下心来好好研究问题原因。不过,目前还是有一个问题没有解决,就是Clang好像不能支持libc++啊。这个等待真的影响到自己c++学习的时候,再解决吧。

vim-YCM插件安装的更多相关文章

  1. VIM YCM 插件安装问题记录

    参考:https://github.com/yangyangwithgnu/use_vim_as_ide https://github.com/Valloric/YouCompleteMe 根据 ht ...

  2. 2018-2019-1 20189206 vim.c插件安装

    vim插件安装 vim插件安装 由于今天在安装vim.c插件耗费了很多时间,配置文件一直不生效,特此记录以下安装插件的方法. 安装vim.c按照博客的方法 第一步:创建目录~/.vim 这个目录是用来 ...

  3. Vim常用插件安装及配置方法

    Vundle 安装 git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim 配置 vimrc首部添 ...

  4. 在ubuntu上搭建开发环境6---安装和使用vim及其插件(Pathogen和NERDTree)

    2015.09.08 更为详细的配置vim的方法,请参见我的新整理的文章:http://segmentfault.com/a/1190000003722928 Vim安装 命令: sudo apt-g ...

  5. Linux --- vim 安装、支持python3的配置、插件自动补全YCM的安装配置及全过程错误总结

    1.git(用来下载vim和相关插件) sudo apt-get install git 2,cmake(用来编译clang-llvm) sudo apt-get install build-esse ...

  6. vim插件安装总结

    vim插件安装总结 vim 插件 vundle 插件对于vim来说是一个杀手级别的神器助手,能自动补全,语法高亮,文件搜索等等,有效地提升了编程效率.下面就个人的一些安装和使用进行一个总结. 自动管理 ...

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

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

  8. vim配置及插件安装管理(超级详细)

    1 写在前面   Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个好用 ...

  9. vim配置及插件安装管理(超级详细)[转]

    1 写在前面   Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个好用 ...

  10. vim插件的安装方式 -- vim注释插件和doxygen函数注释生成插件-ctrlp插件-tabular等号对齐 插件

    使用unzip的时候 指定 -d选项, 是说明解压到的 目标地址. 这个参数还是比较方便的, 比直接unzip到当前目录, 然后在去拷贝到目标目录, 然后再删除当前目录中的解压文件夹, 方便多了. 使 ...

随机推荐

  1. redis基本数据类型和对应的底层数据结构

    Redis的数据类型包含string,list,hash,set,sorted set. Redis中定义了一个对象的结构体: /* * Redis 对象 */ typedef struct redi ...

  2. Android-Universal-Image-Loader学习笔记(3)--内存缓存

    前面的两篇博客写了文件缓存.如今说说Android-Universal-Image-Loader的内存缓存.该内存缓存涉及到的类如图所看到的 这些类的继承关系例如以下图所看到的: 如同文件缓存一样,内 ...

  3. BCB使用线程删除目录中的图片

    BCB新建线程DeleteImgThread类.其会默认继承Thread类,然后在Execute函数中编写代码, void __fastcall DeleteImgThread::Execute() ...

  4. web服务启动spring自己主动运行ApplicationListener的使用方法

    我们知道.一般来说一个项目启动时须要载入或者运行一些特殊的任务来初始化系统.通常的做法就是用servlet去初始化.可是servlet在使用spring bean时不能直接注入,还须要在web.xml ...

  5. yii自己定义CLinkPager分页

    在components中自己定义LinkPager.并继承CLinkPager 代码例如以下: <? php /** * CLinkPager class file. * * @author l ...

  6. org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files (x86)\Java\jdk1.7.0_7

    32为的androidstudio: build.gradle: dexOptions { javaMaxHeapSize "1g"}

  7. iOS开发 之 不要告诉我你真的懂isEqual与hash!

    目录 为什么要有isEqual方法? 如何重写自己的isEqual方法? 为什么要有hash方法? hash方法什么时候被调用? hash方法与判等的关系? 如何重写自己的hash方法? 为什么要有i ...

  8. js捕获页面回车事件

    1.javascript版 document.onkeyup = function (e) { if (window.event)//如果window.event对象存在,就以此事件对象为准 e = ...

  9. 解决win8.1下sql配置iis的问题

    在配置iis8.5时,ISAPI和CGI限制中没有ASP.NET v4.0.30319, 所以要注册.net 4.0 注册方法为在“运行”中输入cmd,然后在命令行中输入: C:\WINDOWS\Mi ...

  10. 基于localStorage的登录注册

    以下代码,如果有地方有错,请直接指出,我会改进的(只改错误,不改逻辑,因为我自己是不会这样写代码的,这个只适合初学者): <!DOCTYPE html> <html> < ...