VIM高级配置III#YouCompleteMe

来源:互联网 发布:澳洲国立大学博士知乎 编辑:程序博客网 时间:2024/05/17 01:08

VIM高级配置 #YouCompleteMe

#Advanced VIM configuration

2017-11-4 by chubohao in Zhengzhou University

Email:1040459612@qq.com

序言:

#Perface

上一节我们介绍了Vundle这款VIM插件管理的安装和使用,可能还会有一部分人模糊插件的安装,特别是输入Vundle指令的时候(例如 :PluginList/:PluginInstall/:PluginUpdate)。不过不要紧,接下来几节的插件大部分都会采用同过Vundle来安装,所以我会用例子来给大家解说Vundle具体用法。但是很不幸的是,YouCompleteMe一块硬骨头,它涉及到好多方面,安装配置起来比较复杂。不过大家一定要沉住气,如果你在我这里安装不成功,那就去找更多的资源,多尝试几次,我会尽我最大的努力去为大家介绍这这个超逼格的插件安装。

本系列教程适合新手参考,大佬们尽管指出不足。为了你的进一步学习,请参考不同来源的教程。多多尝试,一定能安装好。

目录:

#catalog
  • VIM的安装
  • Vundle的安装
  • YouCompleteMe的安装
    • YouCompleteMe的介绍
    • YouCompleteMe的安装
    • 未来先知
  • NERDTree的安装

YouCompleteMe的介绍:

#Introduce of YouCompleteMe

进入外网

望文生义,我们可以知道这款插件的作用——自动补全,对于许多程序员来说,这种功能是必不可少的,但很长一段时间以来,这方面一直缺少一款高等级的自动补全插件,但是YouCompleteMe的出现彻底的改变了这一现状,它对代码的补全完全终于也达到了编译器级别,为什么一个编辑器的插件可以做到如此的神奇,原因就在于它基于 LLVM/clang ,一个Apple公司为了代替GNU/GCC而支持的编译器,正因为YouCompleteMe有了编译器的支持,而不再像以往的插件一样基于文本来进行匹配,所以准确率才如此之高。其次,由于它是C/S架构,会在本机创建一个服务器端,利用clang来解析代码,然后将结果返回给客户端,所以也就解决了VIM是单线程而造成的各种补全插件速度奇慢的诟病,在使用时,几乎感觉不到任何的延时

YouCompleteMe也是所有的插件当中安装最为复杂的一个,这是因为需要用clang来编译相应的库。因为clang在Linux和Mac平台上支持的非常好,所以在这两个平台上安装相对简单。但是clang并没有官方支持Windows,所以YouCompleteMe插件也没有官方支持Windows。可这么好的东西,活跃在Windows上聪明的Vimer们怎么可能容忍这种事情呢,有人就提供了 Windows Installation Guide ,已经编译好了各种版本的YouCompleteMe插件,可以参考这个Guide来安装。

YouCompleteMe除了补全以外,还有一个非常重要的作用: 代码跳转 ,同样可以达到编译器级别的准确度,媲美Visual Assist与Source Insight。有了YouCompleteMe之后,是时候抛弃昂贵的Visual Assist与Source Insight了。赶快安装尝试吧。

YouCompleteMe是一种快速、自动的搜索代码完成引擎,用于Vim。它有几个完成引擎:

  • 一个基于标识的引擎,它适用于所有的编程语言,
  • 一个基于clangc的引擎,它为c/c++/objective-c/c++(从现在被称为“c-family语言”)提供了本地语义代码的完成,
    用于Python 2和3的基于jedit的完成引擎(使用JediHTTP包装器),
  • 一个基于全分的自动完成引擎,
    Gocode和Godef语义引擎的结合,
  • 一个基于tsserver的打印文件的完成引擎,
  • 一个基于tern主机的JavaScript完成引擎,
  • 一个以赛车为基础的锈迹引擎,
  • 它是一种基于功能的复杂系统,它使用来自Vim的omnicom完整系统的数据,为许多其他语言(Ruby、PHP等)提供语义完成。

YouCompleteMe的安装:

#YouCompleteMe Installation


接下来我们要进行这款安装伟大的插件了,在安装之前,我们必须确保完成一些事情。

在命令号输入

vim --version

查看你的VIM版本是否在7.4.1578或者以上?
如果不是,请看《VIM高级配置I》那里有最新版本VIM的安装。
当你确保你的VIM版本在7.4.1578以上后,接下来检查你的VIM是否支持python2或者python3
打开vim在命令行内输入

:echo has('python') || has('python3')

如果返回1,说明支持,如果返回0则需要重新安装VIM(通过编译方式)接下来我会介绍如何通过编译安装VIM


编译安装VIM(使其支持Python2或Python3):

在命令行内输入

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 \    python3-dev ruby-dev lua5.1 lua5.1-dev libperl-dev git

如果你清楚你需要用到哪些语言,你可以进行选择安装,这也可以节约时间。如果不清楚,就直接安装就可以。其中上面的许多东西你可能安装多,但不影响整个进程。

卸载已有的VIM,输入:

sudo apt-get remove vim vim-runtime gvim

如果你的系统比较老,你还需要输入:

sudo apt-get remove vim-tiny vim-common vim-gui-common vim-nox

完整卸载后,我们开始进行安装
输入:

cd ~git clone https://github.com/vim/vim.git

在进行下一步之前,先这样做:
输入:

 cd /usr/lib ls

查看有哪些python版本,找到一个python2.x(2.几)的文件夹
然后分别进入这些文件夹
输入:

ls

记下以“python-”开的文件全名,一会将会用到
回家目录输入

cd vim./configure --with-features=huge \            --enable-multibyte \            --enable-rubyinterp=yes \            --enable-pythoninterp=yes \            --with-python-config-dir=/usr/lib/python2.7/config \            --enable-perlinterp=yes \            --enable-luainterp=yes \            --enable-gui=gtk2 \            --enable-cscope \            --prefix=/usr/localmake VIMRUNTIMEDIR=/usr/local/share/vim/vim80

然后输入

cd ~/vimsudo make install

设置VIM位默认编辑器,并并使用可更新的选项

sudo update-alternatives --install /usr/bin/editor editor /usr/bin/vim 1sudo update-alternatives --set editor /usr/bin/vimsudo update-alternatives --install /usr/bin/vi vi /usr/bin/vim 1sudo update-alternatives --set vi /usr/bin/vim

然后检查vim版本,以及对Python的支持情况
如果版本还是太低,或者执行:

:echo has('python') || has('python3')

输出为0, 则可能是因为vim没有卸载干净,或者你可以执行:

vim --version|grep python

如果现实的结果:+python和+python3代表VIM同时支持了python和python3,这是不正确的,我们只能让vim支持其中一个,不然YouCompleteMe会报错。这时候需要你重新安装上述步骤进行,或者参考其他答案。
如果这两个要求你都完成了的话,我们接着进行。

输入指令:

vim ~/.vimrc

在其中加入:

Plugin 'Valloric/YouCompleteMe'

保存并退出,打开vim,输入:

:PluginInstall

需要等待一段时间,等待出现Done!后退出。如果没有出现Done或者报错了,你可以用这种方式( Git ):

cd ~/.vim/bundlegit clone --recursive [https://github.com/Valloric/YouCompleteMe.git](https://github.com/Valloric/YouCompleteMe.git)

下载完成后,Vundle中会出现一个YouCompleteMe文件件,输入:

cd YouCompleteMEgit submodule update --init --recursive

下载安装最新版的 libclang

sudo apt-get install llvm-3.9 clang-3.9 libclang-3.9-dev libboost-all-dev

编译构建 ycm_core 库

sude apt-get install cmake

创建一个目录放编译过程中产生的文件

mkdir ~/.ycm_buildcd ~/.ycm_build

生成 makefile

cmake -G "Unix Makefiles" -DUSE_SYSTEM_BOOST=ON -DEXTERNAL_LIBCLANG_PATH=/usr/lib/x86_64-linux-gnu/libclang-3.9.so . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp

构建 ycm_core

cmake --build . --target ycm_core

配置

cp ~/.vim/bundle/YouCompleteMe/third_party/ycmd/examples/.ycm_extra_conf.py ~/.vim/

添加vim配置,将下列语句复制到.vimrc中去

“ ~/.vimrclet g:ycm_server_python_interpreter='/usr/bin/python'let g:ycm_global_ycm_extra_conf='~/.vim/.ycm_extra_conf.py'

OK,开始创建一个C文件进行一次检测吧

未来先知:

现在我们已经完成了难度的最高的插件的安装,我也已经花了好几个小时没有活动了,如果你还没有安装成功我深表遗憾,但千万不要放弃,只要记住那几个硬性的要求,多看看英文档案以及其他大佬的文档,我相信你一定会成功的。
那么,下一节我们会做些什么呢?在我们的IDE中,我们的编译器左侧都会有一些目录可供选择,那么VIM呢?下一节这款插件相信肯定会吸引你的,他就是NERDTree。


好了让我们进入下一遍吧 #Let us go on