Vim自动补全神器YouCompleteMe的配置
简介:YouCompleteMe号称Vim的自动补全神器,该项目在github的地址:YouCompleteMe;以下在10.0.1 build-1379776平台配置完成
插件安装操作:
1、确保Vim版本至少是7.4.273,并且支持python2脚本;vim版本升级:sudo add-apt-repository ppa:fcwu-tw/ppa; sudo apt-get update; sudo apt-get install vim
操作系统字符编码必须设置为UTF-8
:
查询语系命令:locale
在Ubuntu14.04中修改语系的方法:
打开文件/etc/default/locale
,修改变量LANG:
中文:LANG="zh_CN.UTF-8"
英文:LANG="en_US.UTF-8"
在CentOS7.0中修改语系的命令行方法:
修改为中文:localectl set-locale LANG=zh_CN.utf8
修改为英文:localectl set-locale LANG=en_US.UTF-8
或者打开文件/etc/locale.conf
修改LANG=zh_CN.utf8
修改后重启即可
2、下载最新版的libclang。Clang是一个开源编译器,能够编译C/C++/Objective-C/Objective-C++。Clang提供的libclang库是用于驱动YCM对这些语言的语义补全支持。YCM需要版本至少为3.6的libclang,但是理论上3.2+版本也行。也可以使用系统libclang,如果确定是3.3版本或者更高。sudo apt-get install libclang-dev
;首先要确保你已经安装类cmake。如果没有,请按如下安装:sudo apt-get install cmake
;其次需要确保你有一些 Python 头文件。如果没有,请按如下安装:sudo apt-get install python-dev
3、编译YCM需要的ycm_support_libs库。YCM的C++引擎通过这些库来获取更快的补全速度。需要cmake,如果未安装,安装之:sudo apt-get install build-essential cmake(也可以下载安装http://www.cmake.org/cmake/resources/software.html)。确保python头文件已安装:sudo apt-get install python-dev
。
4、假设你已经通过Vundle装好YCM了,那么它应该位于~/.vim/bundle/YouCompleteMe
;如果~/.vim/没有bundle文件夹,执行命令:git clone http://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
。
5、手动安装YouCompleteMe。切换至 ~/.vim/bundle
手动下载YouCompleteMe,输入如下命令:git clone https://github.com/Valloric/YouCompleteMe.git
; 手动下载完后检查仓库的完整性,切换到 YouCompleteMe 目录下,输入如下命令:git submodule update --init --recursive
6、编译YCM,如果需要对C-family的语义支持:cd ~/.vim/bundle/YouCompleteMe; ./install.sh --clang-completer
;如果不需要对C-family的语义支持:cd ~/.vim/bundle/YouCompleteMe; ./install.sh
;如果需要支持C#,添加 --omnisharp-complete。如果需要支持Go添加--gocode-completer
编译clang+llvm时内存要大于1.5G,否则会报错: g++: internal compiler error: Killed (program cc1plus) Please submit a full bug report
主要原因大体上是因为内存不足,临时使用交换分区来解决:
sudo dd if=/dev/zero of=/swapfile bs=64M count=16
sudo mkswap /swapfile
sudo swapon /swapfile
编译完成后释放交换空间:
sudo swapoff /swapfile
sudo rm /swapfile
7、接着再次打开 .vimrc 配置YCM,添加内容如下:
filetype off " required!
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
Plugin 'Valloric/YouCompleteMe'
filetype plugin indent on " required!
let g:ycm_global_ycm_extra_conf='~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'
注:
8、为了补全,我们还需要在 .ycm_extra_conf.py 文件中进行配置,vim ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py
;添加信息如下:
'-isystem',
'/usr/include',
'-isystem',
'/usr/include/c++/4.8.4',
'-isystem',
'/usr/include/c++/4.9.2',
'-isystem',
'/usr/include',
'/usr/include/x86_64-linux-gnu/c++',
实际上以上是vim自动补全时搜索路径,如果自动补全的内容位于/usr/local/include
里面,则添加以下信息:
'-isystem',
'/usr/local/include',
根据实际的/usr/include/c++/
中的文件夹名称(即C++版本号)修改:
'-isystem',
'/usr/include/c++/4.8.4',
'-isystem',
'/usr/include/c++/4.9.2',
添加结果如下:
Vim自动补全神器YouCompleteMe的配置的更多相关文章
- Vim自动补全神器–YouCompleteMe
YouCompleteMe的特别之处 基于语义补全 总所周知,Vim是一款文本编辑器.也就是说,其最基础的工作就是编辑文本,而不管该文本的内容是什么.在Vim被程序员所使用后,其慢慢的被肩负了与IDE ...
- Vim自动补全神器–YouCompleteMe
一.简介 YouCompleteMe是Vim的自动补全插件,与同类插件相比,具有如下优势 1.基于语义补全 2.整合实现了多种插件 clang_complete.AutoComplPop .Super ...
- 【转】Vim自动补全插件----YouCompleteMe安装与配置
原文网址:http://www.cnblogs.com/zhongcq/p/3630047.html 使用Vim编写程序少不了使用自动补全插件,在Linux下有没有类似VS中的Visual Assis ...
- Vim自动补全插件----YouCompleteMe安装与配置
Vim自动补全插件----YouCompleteMe安装与配置 使用Vim编写程序少不了使用自动补全插件,在Linux下有没有类似VS中的Visual Assist X这么方便快捷的补全插件呢?以前用 ...
- Vim自动补全神器:YouCompleteMe
第一次听说这个插件还是在偶然的情况下看到别人的博客,听说了这个插件的大名.本来打算在实训期间来完成安装的,无奈网实在不给力,也就拖到了回家的时候.在开始准备工作的时候就了解到这个插件不是很容易安装,安 ...
- Vim自动补全神器:YouCompleteMe(转)
转自:http://blog.jobbole.com/58978/ 可能会有一段时间写linxu,免不了用vim,留着,找时间实操之 原文出处: marchtea 的博客 第一次听说这个插件还是在偶然 ...
- (转)Vim自动补全神器:YouCompleteMe
原文出处:http://blog.jobbole.com/58978/ 第一次听说这个插件还是在偶然的情况下看到别人的博客,听说了这个插件的大名.本来打算在实训期间来完成安装的,无奈网实在不给力,也就 ...
- CentOS7 Vim自动补全插件----YouCompleteMe安装与配置
最近刚装了新系统CentOS7,想要把编码环境配置一下,使用Vim编写程序少不了使用自动补全插件,我以前用的是neocomplcache+code_complete+omnicppcomplete.但 ...
- vim自动补全插件YouCompleteMe
前言 Valloric/YouCompleteMe可以说是vim安装最复杂的插件之一,但是一旦装好,却又是非常好用的.YouCompleteMe简称ycm 在安装折腾的过程中,我再一次的体会到,除了官 ...
随机推荐
- js-异步机制与同步机制
Javascript的优势之一是其如何处理异步代码.异步代码会被放入一个事件队列,等到所有其他代码执行后才进行,而不会阻塞线程 1 理解异步代码: 1.1 JavaScript最基础的异步函数是set ...
- AVPlayer缓存实现
没有任何工具能适用于所有的场景,在使用AVPlayer的过程中,我们会发现它有很多局限性,比如播放网络音乐时,往往不能控制其内部播放逻辑,比如我们会发现播放时seek会失败,数据加载完毕后不能获取到数 ...
- Linux-问题集锦(1)
一. 某用户只读特定文件夹 只读目录 : /home/www/yqz/logs 1. 创建用户 useradd ReadOnly passwd ReadOnly 2. ...
- Python学习笔记(十一)
Python学习笔记(十一): 生成器,迭代器回顾 模块 作业-计算器 1. 生成器,迭代器回顾 1. 列表生成式:[x for x in range(10)] 2. 生成器 (generator o ...
- Anroid四大组件service之本地服务
服务是Android四大组件之一,与Activity一样,代表可执行程序.但Service不像Activity有可操作的用户界面,它是一直在后台运行.用通俗易懂点的话来说: 如果某个应用要在运行时向用 ...
- JS鼠标滚轮事件详解
鼠标滚轮事件 //兼容性写法,该函数也是网上别人写的,不过找不到出处了,蛮好的,所有我也没有必要修改了 //判断鼠标滚轮滚动方向 if (window.addEventListener)//FF,火狐 ...
- pylot网站压力测试
windows下使用python进行网站压力测试,有两个必不可少的程序需要安装,一个是python,另一个是pylot.python是一个 安装软 件,用来运行python程序,而pylot则是pyt ...
- Windows下安装RabbitMQ
今天正好给自己机器安装rabbitmq,总结下安装经验. 现在国内访问erlang,和 RabbitMQ 官网好像都很难连上.我已下载好了资源,需要的朋友可以下载. 链接: https://pan.b ...
- Servlet 笔记-异常处理
当一个 Servlet 抛出一个异常时,Web 容器在使用了 exception-type 元素的 web.xml 中搜索与抛出异常类型相匹配的配置. 必须在 web.xml 中使用 error-pa ...
- Java随机数和UUID
Java随机数和UUID Java随机数 在Java项目中通常是通过Math.random方法和Random类来获得随机数,前者通过生成一个Random类的实例来实现. 此类产生的是一组伪随机数流,通 ...