之前记录在OneNote上感觉有点乱,而且不适合保存shell,这次重新安装又出问题了,干脆写篇博客记录。

从零开始

1、git(用来下载vim和相关插件)

sudo apt-get install git

2、cmake(用来编译clang-llvm)

sudo apt-get install build-essential cmake

3、vim,这里手动编译vim,因为需要python支持,直接apt-get的话会遇到很多麻烦

过程参考https://github.com/Valloric/YouCompleteMe/wiki/Building-Vim-from-source

先安装依赖项,注意,Ubuntu 16.04是liblua5.1-dev而不是lua5.1-dev

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 liblua5.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

然后就是Ubuntu的特别之处,如果要使用python,配置目录可能会有和机器相关的名字,我的是

所以我的配置参数如下:

cd ~
git clone https://github.com/vim/vim.git
cd vim
./configure --with-features=huge \
--enable-multibyte \
--enable-rubyinterp=yes \
--enable-pythoninterp=yes \
--with-python-config-dir=/usr/lib/python2.7/config-x86_64-linux-gnu \
--enable-python3interp=yes \
--with-python3-config-dir=/usr/lib/python3.5/config-3.5m-x86_64_linux-gnu \
--enable-perlinterp=yes \
--enable-luainterp=yes \
--enable-gui=gtk2 --enable-cscope --prefix=/usr
make VIMRUNTIMEDIR=/usr/share/vim/vim80

然后直接安装了

cd ~/vim
sudo make install

相反的,卸载需要保留vim文件夹并且安装checkinstall

sudo apt-get install checkinstall
cd ~/vim
sudo checkinstall

安装成功后,打开vim,命令模式下输入:echo has("python") || has("python3"),结果是1就代表成功了。

之前一次由于没有针对Ubuntu 16.04更改配置,导致vim支持没有安装,虽然vim --version | grep python显示的python前面确实是加号。

4、Vundle (用来管理vim插件)

git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

至于.vimrc的内容见原地址 https://github.com/VundleVim/Vundle.vim

在.vimrc的Vundle begin()和end()之间加上 Plugin 'Valloric/YouCompleteMe',然后vim命令:PluginInstall

由于YouCompleteMe有223M左右,所以需要耐心等待,可以时不时用命令du -s ~/.vim/bundle/YouCompleteMe观察文件夹大小。

5、直接安装YCM

./install.py --clang-completer

它会自动下载clang 3.9.0,也可以手动到http://releases.llvm.org/download.html 下载预编译的二进制文件,爱折腾的可以直接下源码,然后cmake编译。

YCM安装完成,现在在.vimrc中加入以下内容(此处直接参照博客 http://www.mikewootc.com/wiki/tool/sw_develop/vim_ycm_ubuntu_1604.html)

" YouCompleteMe
set runtimepath+=~/.vim/bundle/YouCompleteMe
let g:ycm_collect_identifiers_from_tags_files = 1 " 开启 YCM 基于标签引擎
let g:ycm_collect_identifiers_from_comments_and_strings = 1 " 注释与字符串中的内容也用于补全
let g:syntastic_ignore_files=[".*\.py$"]
let g:ycm_seed_identifiers_with_syntax = 1 " 语法关键字补全
let g:ycm_complete_in_comments = 1
let g:ycm_confirm_extra_conf = 0
let g:ycm_key_list_select_completion = ['<c-n>', '<Down>'] " 映射按键, 没有这个会拦截掉tab, 导致其他插件的tab不能用.
let g:ycm_key_list_previous_completion = ['<c-p>', '<Up>']
let g:ycm_complete_in_comments = 1 " 在注释输入中也能补全
let g:ycm_complete_in_strings = 1 " 在字符串输入中也能补全
let g:ycm_collect_identifiers_from_comments_and_strings = 1 " 注释和字符串中的文字也会被收入补全
let g:ycm_global_ycm_extra_conf='~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'
let g:ycm_show_diagnostics_ui = 0 " 禁用语法检查
inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<CR>" | " 回车即选中当前项
nnoremap <c-j> :YcmCompleter GoToDefinitionElseDeclaration<CR>| " 跳转到定义处
"let g:ycm_min_num_of_chars_for_completion=2 " 从第2个键入字符就开始罗列匹配项

关键是配置文件.ycm_extra_conf.py,包含了补全的系统头文件和源文件出处。

在这里添加需要包含的目录,只需要修改flags

到这里基本YCM就配置好了,Ctrl+Space弹出补全对象,Ctrl+J跳转至定义处,这里暂时只添加了标准库,因为有些函数是一层层的调用,如果要看底层实现,可以学习下ctags的使用,毕竟YCM最大的优点是补全的同时还能非常流畅地编辑,包含太多可能导致补全变慢。

而且.ycm_extra_conf.py可以在当前目录配置,YCM是先在当前目录查找再网上走一直递归到找到为止,并且只会加载一次。

更多内容参考原地址 https://github.com/snakeleon/YouCompleteMe-x86

Ubuntu 16.04 64位安装YouCompleteMe的更多相关文章

  1. Ubuntu 16.04 64位安装arm-linux-gcc交叉编译器以及samba服务器

    交叉编译器是嵌入式开发的必要工具,但是由于目前大多数人使用64位ubuntu,在照着很多教程做的时候,就会失败,失败原因是64位ubuntu需要额外安装32位的兼容包.以arm-linux-gcc-3 ...

  2. Ubuntu 16.04 64位安装insight 6.8

    1. apt-get install insight已经不管用. 2. 编译源码死都有问题. 3. 拜拜,用KDBG.

  3. Ubuntu 16.04 64位 搭建 node.js NodeJS 环境

    我的系统环境: Ubuntu 16.04 64位 本文内容亲测可用, 请放心食用 使用淘宝镜像 淘宝镜像官网是https://npm.taobao.org/ 使用淘宝镜像前请自行安装好 npm 和 n ...

  4. ubuntu 14.04 64位安装iNodeClient

    ubuntu 14.04 64位安装iNodeClieng(华三校园客服端) http://pan.baidu.com/s/12dpxk ubuntu 14.04 64bit Install H3C ...

  5. Ubuntu 18.04 64位安装tensorflow-gpu

    第一步(可直接跳到第二步):安装nvidia显卡驱动 linux用户可以通过官方ppa解决安装GPU驱动的问题.使用如下命令添加Graphic Drivers PPA: 1 sudo add-apt- ...

  6. ubuntu 14.04 64位安装bigbluebutton

    BigBlueButton 是一个使用 ActionScript 开发的在线视频会议系统或者是远程教育系统,主要功能包括在线PPT演示.视频交流和语音交流,还可以进行文字交流.举手发言等功能,特别适合 ...

  7. Ubuntu 14.04 64位安装Android Studio 和 genymotion (下)

    接上一篇,上回书说到,我们可以进android studio的编辑器了.感觉不错.挺好的,先不说genymotion,先看看你的android项目有没有r文件,项目有没有错误? 如果没有问题的话,下面 ...

  8. Ubuntu 14.04 64位安装Android Studio 和 genymotion (上)

    先说下,Ubuntu 上安装Android Studio真是一路坑阿,一路坑阿,加上天  朝 防火墙挡着,折腾了快一天才弄好阿 找了n多教程,md不是抄的就是转的,而且都没说清楚具体咋装阿,一个图一个 ...

  9. ubuntu 12.04 64位 安装wps

    1.去wps官网下载linux版的软件 http://community.wps.cn/download/ 我这里下载的是Alpha版的kingsoft-office_9.1.0.4280~a12p4 ...

随机推荐

  1. python装饰器 高阶函数 函数闭包

    1.装饰器: 本质是函数,功能是为其他函数添加附加功能 原则:1.不修改被装饰函数的源代码 2.不修改被修饰函数的调用方式 装饰器=高阶函数+函数嵌套+闭包 #装饰器格式框架def wrap(func ...

  2. 通过注解实现Spring 声明式事务管理

    小Alan接着上一篇Spring事务管理入门与进阶做一些补充,如果对Spring事务管理还不了解的可以看看上一篇文章. 实例 在我们开始之前,至少有两个数据库表是至关重要的,在事务的帮助下,我们可以实 ...

  3. 搭建高可用mongodb集群(二)—— 副本集

    在上一篇文章<搭建高可用MongoDB集群(一)--配置MongoDB> 提到了几个问题还没有解决. 主节点挂了能否自动切换连接?目前需要手工切换. 主节点的读写压力过大如何解决? 从节点 ...

  4. 从golang-gin-realworld-example-app项目学写httpapi (八)

    https://github.com/gothinkster/golang-gin-realworld-example-app/blob/master/common/unit_test.go 单元测试 ...

  5. 查询login什么时候过期

    -- Show all logins where the password is over 60 days old --查看60天没改密码的login SELECT name, LOGINPROPER ...

  6. Java实例---简单的数据库操作

    源码分析 DAOFactory.java package cn.ftl.mysql ; public class DAOFactory { public static IEmpDAO getIEmpD ...

  7. PHP修改图片

    这篇是关于修改图片的效果,主要还是用到php中的GD库中的函数,没想到php还有这凶残能力,出乎我的预料. 先看代码upload_image.php,主要是一个上传控件,用来选择图片 <html ...

  8. eclipse git 解决冲突

    1,team->synchronize workspace 2, merge tool 合并本地版本 3,add to git index 4,commit 5,push

  9. 【[SHOI2012]随机树】

    感觉第一问就非常神仙,还有第二问怎么被我当成组合数学题来做了 首先是第一问 期望具有线性性,于是深度平均值的期望等于深度和的期望值的平均 设\(dp_x\)表示具有\(x\)个叶子节点的树的深度和的期 ...

  10. Calabash(葫芦娃)

    嘟嘟嘟 第一眼就觉得肯定某种是最短路,然后想了半天也不知道.然后就把送的50分写了,然后就爆搜,结果因为一个错误的剪枝竟然90分?!只能怪数据太水…… 考完试后听bin哥讲,说就是普通的最短路,只不过 ...