前言

Valloric/YouCompleteMe可以说是vim安装最复杂的插件之一,但是一旦装好,却又是非常好用的。YouCompleteMe简称ycm

在安装折腾的过程中,我再一次的体会到,除了官网教程,百度上的教程都是辣鸡,都是坑!

安装准备:

1.确保已经安装好build-essential 和 cmake 。ycm是编译型补全插件,这两个工具是编译ycm用的。

sudo apt-get install build-essential cmake

2.确保已经安装好了python-dev 和 python3-dev

sudo apt-get install python-dev python3-dev

3.下载ycm

我们使用vundle插件下载ycm。vundle是管理vim插件的vim插件,安装很简单,安装vundle的教程另附了,大家也可以自行上网搜索。

在vimrc里增加如下语句,让ycm添加到vundle的管理列表中:

Bundle 'Valloric/YouCompleteMe'
Bunlde 'SirVer/ultisnips'
Bundle 'honza/vim-snippets'

注意!!这里有2个天坑, 'SirVer/ultisnips' 和 'honza/vim-snippets' 这两个插件在ycm安装文档中没有说明的!我是去了ultisnips的git上才看到。如果不安装,就会在进入vim的时候报OnBufferRead的错!

然后在vim里执行,下载并安装列表中的插件。当然了,这里包含了我们刚增加的ycm。这个过程比较漫长,可以需要十来分钟,耐心等待吧。

:BundleInstall

4.编译ycm

上面的步骤只是把ycm下载下来了,但是还没有编译。使用如下命令编译ycm。以下的例子,只添加对C++补全的支持。

cd ~/.vim/bundle/YouCompleteMe
./install.py --clang-completer

对其他语言的支持有,大家可以按需求添加。如果想全部语言都安装,可以使用./install.py --all

C# support: install Mono and add --omnisharp-completer
Go support: install Go and add --gocode-completer
TypeScript support: install Node.js and npm then install the TypeScript SDK with npm install -g typescript.
JavaScript support: install Node.js and npm and add --tern-completer
Rust support: install Rust and add --racer-completer

5.配置工程

如果上面顺利的话,你已经完成了ycm的安装。最后在vimrc中添加如下快捷键方便使用。

let g:UltiSnipsExpandTrigger="<tab>"
let g:UltiSnipsJumpForwardTrigger="<c-b>"
let g:UltiSnipsJumpBackwardTrigger="<c-z>"
" If you want :UltiSnipsEdit to split your window.
let g:UltiSnipsEditSplit="vertical"

对于每一个工程,我们可以自定义.ycm_extra_conf.py ,这个文件可以定义自动补全的各种细节,例如搜索什么目录等等,都可以在里面进行设置。

ycm是依赖clang实现补全的,如果需要c++补全,需要在.ycm_exrea_conf.py文件中添加响应的c++文件路径。

c++文件路径详情可以通过以下命令查询

echo |clang -std=c++11 -stdlib=libc++ -v -E -x c++ -

以下是在.ycm_exrea_conf.py添加内容的例子

'-isystem','/usr/local/include',

'-isystem','/usr/lib/gcc/x86_64-linux-gnu/4.8/include',

'-isystem','usr/include/x86_64-linux-gnu',

'-isystem','usr/include',

vim自动补全插件YouCompleteMe的更多相关文章

  1. 【转】Vim自动补全插件----YouCompleteMe安装与配置

    原文网址:http://www.cnblogs.com/zhongcq/p/3630047.html 使用Vim编写程序少不了使用自动补全插件,在Linux下有没有类似VS中的Visual Assis ...

  2. Vim自动补全插件----YouCompleteMe安装与配置

    Vim自动补全插件----YouCompleteMe安装与配置 使用Vim编写程序少不了使用自动补全插件,在Linux下有没有类似VS中的Visual Assist X这么方便快捷的补全插件呢?以前用 ...

  3. CentOS7 Vim自动补全插件----YouCompleteMe安装与配置

    最近刚装了新系统CentOS7,想要把编码环境配置一下,使用Vim编写程序少不了使用自动补全插件,我以前用的是neocomplcache+code_complete+omnicppcomplete.但 ...

  4. 如何安装vim自动补全插件YouCompleteMe(YCM)

    Vim是全平台上一个高度可拓展的编辑器.它本身只是一个简陋的编辑器,但是因为有各种插件而变得强大.使用Vim编写代码就不免遇到代码补全的问题.常用的代码补全插件有两个:日本人shougo写的neoco ...

  5. vim自动补全插件YouCompleteMe的安装及配置

    原文地址: http://blog.csdn.net/shixuehancheng/article/details/46289811

  6. Vim自动补全神器–YouCompleteMe

    YouCompleteMe的特别之处 基于语义补全 总所周知,Vim是一款文本编辑器.也就是说,其最基础的工作就是编辑文本,而不管该文本的内容是什么.在Vim被程序员所使用后,其慢慢的被肩负了与IDE ...

  7. VIM自动补全插件 - YouCompleteMe--"大神级vim补全插件"

    VIM自动补全插件 - YouCompleteMe 序言 vim 之所以被称为编辑器之神多半归功于其丰富的可DIY的灵活插件功能,( 例如vim下的这款神级般的代码补全插件YouCompleteMe) ...

  8. Windows 10环境安装VIM代码补全插件YouCompleteMe

    Windows 10环境安装VIM代码补全插件YouCompleteMe 折腾一周也没搞定Windows下安装VIM代码补全插件YouCompleteMe,今天在家折腾一天总算搞定了.关键问题是在于P ...

  9. Vim自动补全神器–YouCompleteMe

    一.简介 YouCompleteMe是Vim的自动补全插件,与同类插件相比,具有如下优势 1.基于语义补全 2.整合实现了多种插件 clang_complete.AutoComplPop .Super ...

随机推荐

  1. IOS-各控件默认尺寸和参考图标大小

    UITabBar

  2. Web端即时通讯技术盘点:短轮询、Comet、Websocket、SSE

    1. 前言 Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Serve ...

  3. Python数据类型之“序列概述与基本序列类型(Basic Sequences)”

    序列是指有序的队列,重点在"有序". 一.Python中序列的分类 Python中的序列主要以下几种类型: 3种基本序列类型(Basic Sequence Types):list. ...

  4. 关于Ubuntu运行级别、开机启动脚本的说明

    关于Ubuntu运行级别.开机启动脚本的说明 目录简介 1.1介绍Ubuntu下面的自启动脚本目录 1.2 Linux操作系统运行级别的概念 1.3关于操作系统自启脚本的启动顺序 1.4    Lin ...

  5. hibernate(六) cascade(级联)和inverse关系详解

    序言 写这篇文章之前,自己也查了很多的资料来搞清楚这两者的关系和各自所做的事情,但是百度一搜,大多数博文感觉说的云里雾里,可能博主自己清楚是怎么一回事,但是给一个不懂的人或者一知半解的人看的话,别人也 ...

  6. 本机搭建zookeeper集群

    3个 clientPort分别设置为2181,2182,2083 server.1=127.0.0.1:2888:3888 server.2=127.0.0.2:2889:3889 server.3= ...

  7. JavaScript作用域原理(一)——作用域链

    一.作用域的描述 JavaScript权威指南中对作用域有一句很精辟的描述:“JavaScript中的函数运行在它们被定义的作用域里,而不是它们被执行的作用域里.” 在JavaScript中,作用域的 ...

  8. [转载]Office Visio快捷键

    “帮助”任务窗格和“帮助”窗口 使用“帮助”任务窗格和“帮助”窗口 通过“帮助”任务窗格,您可以访问“Microsoft Office Visio 帮助”的全部内容,该窗格显示为 Microsoft ...

  9. 天气webservices

    Web现状 Web服务 概念 具有web服务 构成 UDDI WSDL 天气预报 web服务现状     记的以前看VB.NET时中间就介绍了WSDL,而今又学到web服务,所以用天气预报的实例学习一 ...

  10. 3.创建第一个android项目

    安卓开发学习笔记 1.安卓开发之环境搭建 2.SDK目录结构和adb工具及命令介绍 3.创建第一个android项目 1.打开Eclipse,选择File——>new——>others.. ...