Ubuntu安装YouCompleteMe插件php
简介:html
众所周知, Vim
是一款linux下的文本编辑器, 其最基础的工做就是编辑文本,而无论该文本的内容是什么。python
在Vim
被程序员所使用后,其慢慢的被肩负了与IDE同样的工做,文本自动补全(ie.acp
,omnicppcompleter
),代码检查(Syntastic
)等等工做。linux
针对文本自动补全这个功能来讲,主要有两种实现方式。c++
咱们经常使用的omnicppcompleter
,acp
,vim自带的c-x, c-n
的实现方式就是基于文本。更通俗的说法,其实就是一个字:猜. 其经过文本进行一些正则表达式的匹配,再根据生成的tags(利用ctags
生成)来实现自动补全的效果。git
顾名思义,其是经过分析源文件,通过语法分析之后进行补全。因为对源文件进行分析,基于语义的补全能够作到很精确。可是这显然是vim所不可能支持的。并且通过这么多年发展,因为语法分析有很高的难度,也一直没有合适的工具出现。直到,由apple支持的clang/llvm
横空出世。YouCompleteMe
也正是在clang/llvm
的基础上进行构建的。程序员
对于其余的语言,会调用vim设置的omnifunc
来匹配,所以一样支持php
,ruby
等语言。github
正文:正则表达式
0x00. 简介vim
YouCompleteMe号称Vim的自动补全神器,YouCompleteMe: a code-completion engine for Vim,该项目在github的地址:YouCompleteMe。
0x01. Requirements
Vim is at least 7.3.584 and it has support for python2 scripting.
0x02. 用Vundle来安装YCM(YouCompleteMe)
安装其实很是简单,在.vimrc文件中加入语句 Bundle 'Valloric/YouCompleteMe' 便可,保存,退出,而后再次打开Vim,normal模式下输入 :BundleInstall 即开始下载。以下图:
也能够切换至 .vim/bundle 下手动下载,输入以下命令:
git clone https://github.com/Valloric/YouCompleteMe.git
手动下载完后检查仓库的完整性,切换到 YouCompleteMe 目录下,输入以下命令:
git submodule update --init --recursive
0x03. 下载最新的libclang
Clang是一个开源的编译器,它能够编译C/C++/Objective-C/Objective-C++. Clang提供的libclang库是用来给YCM为这些语言提供语义补全的引擎。和YCM配合的libclang版本必须 >=3.6 ,但理论上也是能够和 3.2+ 版本的libclang配合使用的。下载最新的libclang以下:
sudo apt-get install libclang-dev
0x04. 编译YCM须要的ycm_support_libs库
首先要确保你已经安装类cmake。若是没有,请按以下安装:
sudo apt-get install cmake
其次须要确保你有一些 Python 头文件。若是没有,请按以下安装:
sudo apt-get install python-dev
接下来,建立新的文件夹 ycm_build 进行编译,以下:
1 cd ~ 2 mkdir ycm_build 3 cd ycm_build
不须要语义补全的童鞋们,直接执行下面的语句:
cmake -G "Unix Makefiles" . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
然并卵啊,俺们是须要语义补全的呀~,那么请先去 llvm.org 下载最新的 clang+llvm 包,而后把它们解压到 ~/ycm_temp/llvm_root_dir 文件夹下。接着,执行以下语句:
cmake -G "Unix Makefiles" -DPATH_TO_LLVM_ROOT=~/ycm_temp/llvm_root_dir . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
再接着要开始编译 ycm_support_libs 库,执行以下语句:
make ycm_support_libs
这样就编译完了。
0x05. 配置YCM
本渣开始觉得编译完了就完事了,谁知道再次打开Vim,它来了这么一句:No .ycm_extra_conf.py file detected, so no compile flags are available. Thus no semantic support for C/C++/ObjC/ObjC++. 哦呵呵呵~
进 ~/.vim/bundle/YouCompleteMe 文件夹下一看。。。没有 cpp !没有 cpp !没有 cpp !
咋办?新建呗。。。而后把 YCM‘S own .ycm_extra_conf.py 文件拷贝到相应的文件夹下。
接着再次打开 .vimrc 配置YCM,以下:
"YouCompleteMe let g:ycm_global_ycm_extra_conf='~/.vim/bundle/YouCompleteMe/cpp/ycm/.ycm_extra_conf.py'
以后再次打开Vim便可。
为了补全,咱们还须要在 .ycm_extra_conf.py 文件中进行配置,以下:
1 '-isystem', 2 '/usr/include', 3 '-isystem', 4 '/usr/include/c++/4.9.2', 5 '-isystem', 6 '/usr/include', 7 '/usr/include/x86_64-linux-gnu/c++',
0x06. Summary
城里人真会玩:)
本身再配置配置能够起飞了~
Vim自动补全插件----YouCompleteMe安装与配置 http://www.linuxidc.com/Linux/2014-04/99719.htm
更多Ubuntu相关信息见Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2