YCM的安装与配置
花了好几天的时间,总算把YCM装上了。期间遇到了各种问题,主要还是因为刚进linux,对linux环境不熟, 命令资料等查了半天。当然,YCM也普遍被认为是一种安装配置复杂,但使用起来超简单的插件。
好,废话不多说。开始干活。(英语好的请无视后面内容,直接狂戳它:https://github.com/Valloric/YouCompleteMe,YCM在git的上主页,详细介绍了如何安装配置YCM。遗憾的是,我完全按git教程的步骤没成功,还得做一点点小修改,我总结到了最后面。)
第一步,安装带python选项的vim
YCM需要VIM7.3.584以上且支持python。Ubuntu中是VIM7.4但没有python。查看你的vim是否支持python,运行命令:vim --version。如果出现+python,则表示支持。如果是-python,抱歉,可能你得从源码编译安装了。
1. 编译Vim之前,需要下载编译的相关工具和一些库(都要下载安装好,不然后面可能会出现问题)
sudo apt-get install libncurses5-dev libgnome2-dev libgnomeui-dev libgtk2.0-dev libatk1.0-dev libbonoboui2-dev libcairo2-dev libx11-dev libxpm-dev libxt-dev python-dev ruby-dev mercurial
2. 用apt-get卸载之前的vim。
3. 下载新版本vim7.4源码,网址为:(ftp://ftp.vim.org/pub/vim/unix/vim-7.4.tar.bz2)
tar -xjvf vim-7.4.tar.bz2
解压至 ~/downloads/vim74/
4. cd ~/downloads/vim74/
设置Vim源码的编译属性
./configure --with-features=huge --enable-pythoninterp --with-python-config-dir=/usr/lib/python2.7/config --enable-cscope --enable-multibyte --prefix=/usr
需要重新配置可 输入 make distclean #清理一下上一次编译生成的所有文件。
其中参数说明如下:
- --with-features=huge:支持最大特性
- --enable-pythoninterp:启用Vim对python编写的插件的支持
- --enable-multibyte:多字节支持 可以在Vim中输入中文
- --enable-cscope:Vim对cscope支持
- --with-python-config-dir=/usr/lib/python2.7/config-i386-linux-gnu/ 指定 python 路径
- --prefix=/usr:编译安装路径
这里值得注意的是,你在第一步时一定要先安装好python-dev。不然后面make install 后虽然成功了,但是vim --version后还是会出现-python。这里的关键在于/usr/lib64/python2.6/config中要用config.c这个文件,如果你没安好python-dev的话就没这个文件。(我掉到这坑爬了好久才出来。。所以第一步还是很重要的)
sudo make VIMRUNTIMEDIR=/usr/share/vim/vim74
sudo make install
第二步,编译安装llvm-clang(如果你不需要ycm支持C/C++语义补全。 直接到下一步)
按照git中的教程,有两种方法,一种是下载现成编译好的二进制代码,问题是给出的链接中只有有限版本的二进制包,如CentOS就没有,而且llvm-clang3.3+ 的只有Ubuntu64位,没有32位的。第二种方法是下载源码包,自行编译。据说编译时间暴慢,我还没试过,下次在CentOS下是成功了再写上来。
我为了省事,下了个llvm-clang3.2 Ubuntu12.04 32位已编译好的二进制包,但我的Ubuntu 14.04 32位的,你们根据自己系统看着办吧,如果是CentOS可能就得自己编译安装了。
下好后解压到~/ycm_tmp
mkdir ~/ycm_tmp
tar -xvf clang陛3.2-x86-linux-ubuntu-12.04.tar.gz
第三步,利用Vundle下好YouCompleteMe
Vundle是个vim插件管理器。
在装好Vundle后,在你的.vimrc中里面添加
Plugin 'Valloric/YouCompleteMe'
之后退出.vimrc, 在打开vim运行:
BundleInstall
这里Vundle可能会运行比较久,因为YCM相对于其它插件还是比较大的Give it time(我大概用了半个小时,-.-||)。
之后在你的Vundle文件下就有会YouCompleteMe文件夹了。
第四步,编译YouCompleteMe
1. 首先要安装好cmake,因为YCM需要用到
sudo apt-get install cmake
2. 建好文件夹ycm_build,进入(待会这个文件夹ycm_build存放cmake时产生的文件, 名字必须为ycm_build,后面如果你要用自带的.ycm_extra_config.py的话)
cd ~
mkdir ycm_build
cd ycm_build
3. 如果你不需要ycm支持C/C++语义补全,如下(注意中间有个点 "." 代表当前目录):
cmake -G "Unix Makefiles" . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
make ycm_support_libs
如果需要支持C/C++语义补全,如下:
cmake -G "Unix Makefiles" -DEXTERNAL_LIBCLANG_PATH=~/ycm_tmp/clang+llvm-3.2-x86-linux-ubuntu-12.04/lib/libclang.so . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
make ycm_support_libs
其中-DEXTERNAL_LIBCLANG_PATH就是第二步中你的llvm-clang 下的libclang.so文件。
其实git教程中不是这样的,它只要llvm-clang根目录(也就是包含了include,lib,bin等文件的目录)就可以了。但我这样做虽然编译成功了,但还是不能支持c/c++中的语义补全(如成员变量补全)。这个坑我又爬了大半天。。。
git教程中的应该是这样(反正我这样做是没搞定。。 你们自己看着办):
cmake -G "Unix Makefiles" -DEXTERNAL_LIBCLANG_PATH=~/ycm_tmp/clang+llvm-3.2-x86-linux-ubuntu-12.04/ . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
make ycm_support_libs
到此为止,你的~/ycm_build中应该会出现一些文件和文件夹(之前是空目录)。说明ycm已经装好了,最后一步就是配置你的.vimrc啦!
第五步,配置YouCompleteMe
YCM需要.ycm_extra_conf.py这个文件方能很好的工作。其实它已经存在啦,你将它拷贝到你的项目工程目录(或者更上层目录,这都无所谓,反正是递归查找,我的就直接拷到了~/下了)并做一丢丢修改就完成了!!
cp ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py ~/.ycm_extra_conf.py
编辑~/.ycm_extra_conf.py
在 flags中加入'-I' /usr/include/c++/4.8 和 '-I' '/usr/include/i386-linux-gnu/c++/4.8'
然后找到
try:
final_flags.remove( '-stdlib=libc++' )
except ValueError:
pass
并且全部注释。
最后一步,在你的.vimrc中加入这个.ycm_extra_conf.py文件在你系统中的路径。我的如下
let g:ycm_global_ycm_extra_conf='~/.ycm_extra_conf.py'
至此,大功告成!!打开你的vim试试效果吧。
附: 安装过程中出现的问题与解决方案:
Q1: 源码编译安装支持python的vim失败。虽然编译安装成功了,但是在vim --version中还是出现了-python
A1: 查看你的/usr/lib64/python2.6/config(你对应的python目录),看看里面是否有config.c。如果没有,请sudo apt-get install python-dev。第一步中那一大堆软件还是很有必要装的.
Q2:利用Vundle下载YCM时迟迟没反应。
A2: 慢慢等吧。网速不好还可能下载失败。
Q3:YCM已经安装好了,但是没有语义补全功能。比如不能补全成员变量等。
A3:
原因1:在VIM中运行YcmDiags,看看有没有什么warn或error,我的就出现了bits/c++config.h can not found.
运行命令 locate bit/c++config.h
找到相应路径。编辑~/.ycm_extra_conf.py
在 flags中加入响应路径。如我的就是: '-I' /usr/include/c++/4.8 和 '-I' '/usr/include/i386-linux-gnu/c++/4.8'
原因2:
在编译YCM的时候,是这样的(没有包含具体的libclang):
cmake -G "Unix Makefiles" -DEXTERNAL_LIBCLANG_PATH=~/ycm_tmp/clang+llvm-3.2-x86-linux-ubuntu-12.04/ . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
改为这样编译试试(注意应当把当前的ycm_build删除再新建一个空的)
cmake -G "Unix Makefiles" -DEXTERNAL_LIBCLANG_PATH=~/ycm_tmp/clang+llvm-3.2-x86-linux-ubuntu-12.04/lib/libclang.so . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
参考链接:
http://www.cnblogs.com/zhongcq/p/3630047.html
https://github.com/Valloric/YouCompleteMe
http://www.cnblogs.com/csuftzzk/p/3435710.html
http://www.cnblogs.com/weishun/p/tencent-shixi-2014-08-19-vimrc-youcompleteme.html
YCM的安装与配置的更多相关文章
- YCM安装与配置
1.重新编译vim 2.通过vundle安装YCM 3.安装CMake 4.下载预先编译好的llvm+clang 5.看官网的命令,生成CMake的编译文件并编译 配置YCM: 要额外配置ycm_ex ...
- Linux --- vim 安装、支持python3的配置、插件自动补全YCM的安装配置及全过程错误总结
1.git(用来下载vim和相关插件) sudo apt-get install git 2,cmake(用来编译clang-llvm) sudo apt-get install build-esse ...
- CentOS 7下的Vim自动补齐插件YouCompleteMe安装及配置
备注:现在对于 YouCompleteMe 的安装应采用更为简单的方法,即利用 Vundle 来安装这个插件.具体方法可见: Vundle 主页 YouCompleteMe 主页 而 .vimrc 的 ...
- 【转】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这么方便快捷的补全插件呢?以前用 ...
- JDK安装与配置
JDK安装与配置 一.下载 JDK是ORACLE提供免费下载使用的,官网地址:https://www.oracle.com/index.html 一般选择Java SE版本即可,企业版的选择Java ...
- Node.js 教程 01 - 简介、安装及配置
系列目录: Node.js 教程 01 - 简介.安装及配置 Node.js 教程 02 - 经典的Hello World Node.js 教程 03 - 创建HTTP服务器 Node.js 教程 0 ...
- 烂泥:redis3.2.3安装与配置
本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 前一段时间写过一篇codis集群的文章,写那篇文章主要是因为当时的项目不支持redis自 ...
- mysql源码包手动安装、配置以及测试(亲测可行)
笔记编者:小波/qq463431476博客首页:http://www.cnblogs.com/xiaobo-Linux/ 记下这篇mysql笔记,望日后有用! redhat6采用centos yum源 ...
随机推荐
- Cannot instantiate the type HttpClient问题
看自己动手写爬虫,没想到一上来就跪了. 里面提到用的jar包是apache的http客户端开源项目---HttpClient 就去官网下载了一个版本4.3 当按书上代码敲时 HttpClient ht ...
- mysql数据类型区别
create table t1(c1 float(10,2), c3 decimal(10,2)); insert into t1 values(1234567.23, 1234567.23,1234 ...
- Linux 下五个顶级的开源命令行 Shell
这个世界上有两种 Linux 用户:敢于冒险的和态度谨慎的. 其中一类用户总是本能的去尝试任何能够戳中其痛点的新选择.他们尝试过不计其数的窗口管理器.系统发行版和几乎所有能找到的桌面插件. 另一类用户 ...
- PEAR:使用PHPDoc轻松建立你的PEAR文档
对于一个开发人员,文档总是最感到头疼的事情之一.而且,很可能你对待文档会采取截然不同的2种态度: 当你使用别人的代码库的时候,最希望得到的是它的技术文档,尤其是当时间很紧,而你又不得不硬着头皮去读那些 ...
- Java基础知识强化之IO流笔记74:NIO之 Buffer
Java NIO中的Buffer用于和NIO通道进行交互.如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的. 缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存.这块内存被包装成NIO ...
- In-Memory:Hash Index
SQL Server 2016支持哈希查找,用户可以在内存优化表(Memory-Optimized Table)上创建Hash Index,使用Hash 查找算法,实现数据的极速查找.在使用上,Has ...
- 【Shell脚本学习21】Shell break和continue命令
在循环过程中,有时候需要在未达到循环结束条件时强制跳出循环,像大多数编程语言一样,Shell也使用 break 和 continue 来跳出循环. break命令 break命令允许跳出所有循环(终止 ...
- 【Java/Android性能优化1】Android性能调优
本文参考:http://www.trinea.cn/android/android-performance-demo/ 本文主要分享自己在appstore项目中的性能调优点,包括同步改异步.缓存.La ...
- 《算法导论》习题解答 Chapter 22.1-5(求平方图)
一.邻接矩阵实现 思路:如果是邻接矩阵存储,设邻接矩阵为A,则A*A即为平方图,只需要矩阵相乘即可: 伪代码: for i=1 to n for j=1 to n for k=1 to n resul ...
- oracle lsnrctl
Oracle 11G在windows 7系统上不需要设置系统环境变量. 在命令行环境中运行命令: echo %ORACLE_SID% 可以看到此变量并不存在.也可以到注册表验证: HKEY_CURRE ...