centos7里给vim安装YouCompleteMe插件

        以前在centos 6.5里装 YouCompleteMe 太费劲了,光是编译youcomplete_libs、LLVM和clang就起码折腾了大半天,为了加入python支持还得重新编译vim,是够折腾。

        看到centos 7的内核都从2.6升级到3.1了, 官方没有理由还让一些著名的应用程序不更新吧?装了一个新版本来看看,哟呵呵vim是7.4了:

  yum install vim-enhanced.x86_64  //这个版本内置了python, 不用自己重新编译舒服了吧。

  接着就是LLVM和clang了吧, 卧槽,centos官方的yum源里居然没有; google了一下,继续卧槽大部分人都是下代码来编译,莫非又是一次轮回?看到github上的YouCompleteMe作者说:YCM is designed to work with libclang version 3.5 or higher, but can in theory work with any 3.2+ version as well.  居然被我找到了一个yum源里有3.4的clang, 直接上:

添加epel源
wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-2.noarch.rpm
sudo rpm -ivh epel-release-7-2.noarch.rpm
sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7


安装yum-axelget可以使yum并行下载,加快速度
sudo yum install yum-axelget
yum install clang               # clang编译器

 

接着就是参照github安装vundle, YouCompleteMe插件,体力活,耐心等待即可。 里面提到了mddir ~/ycm_build之类的照做就是, 

特别强调:默认会使用gcc/g++来编译,但是这货需要消耗大量的资源,特别是cpu和内存都要爆掉了,

在banana pi里编译甚至会死机。基于上面已经安装了clang,所以可以考虑用它。

在bananapi 里用apt-get install libboost-** 安装的boost库,虽然能编译通过,但是在运行的时候会YCM起不来,看日志发现是在so里有个boost中导出的函数链接不上!!!! YCM作者也在README里强烈反对用这个boost, 那么就自己编译boost吧,O(∩_∩)O哈哈哈~

export CC=/usr/bin/clang
export CXX=/usr/bin/clang++
cd ~/.vim/bundle/YouCompleteMe

./install.py --system-libclang --clang-completer --gocode-completer --tern-completer 

https://github.com/Valloric/YouCompleteMe

以上是自动安装。

 

以下是手工安装:

等vim提报告安装完成vundle和YouCompleteMe之后,

安装cmake

yum install cmake

安装python-devel

yum install python-devel

生成makefile

cmake -G "Unix Makefiles" -DUSE_SYSTEM_LIBCLANG=ON . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp

//注意这个是使用了刚才上面安装的系统clang,不需要手工再编译可以节省大量的时间。

生成lib

make ycm_support_libs  //编译支持库,

配置

cp  .vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py  ~/

编辑~/.vimrc 

set nocompatible              " be iMproved, required
syntax on                     " 语法高亮
filetype off                  " required
filetype indent on            " 根据文件类型缩进
filetype plugin on            " for vim Makefile
set nu                        " 显示行号
" 缩进设置
set autoindent                " 自动缩进
set cindent                   " C风格缩进
set smartindent               " 智能缩进

" 普通文件Tab设置             
set expandtab
set tabstop=4
set softtabstop=4
set shiftwidth=4
" 括号匹配
set showmatch
set matchtime=1               " 匹配高亮时间(单位是十分之一秒)
set completeopt=longest,menu    "让Vim的补全菜单行为与一般IDE一致(参考VimTip1228)
hi comment ctermfg=6            "注释的颜色

set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" let Vundle manage Vundle, required
Plugin 'gmarik/Vundle.vim'
Plugin 'Valloric/YouCompleteMe'
Plugin 'Chiel92/vim-autoformat'

call vundle#end()            " required
filetype plugin indent on    " required

let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py'
let g:ycm_complete_in_strings = 0 " 设置YCM不在字符串内补全
let g:ycm_confirm_extra_conf = 0
let g:ycm_seed_identifiers_with_syntax = 1
let g:ycm_error_symbol = '>>'
let g:ycm_warning_symbol = '>*'
let g:ycm_enable_diagnostic_signs = 0           "不显示侧边提示
let g:ycm_enable_diagnostic_highlighting = 0
let g:ycm_seed_identifiers_with_syntax=1        " 语法关键字补全
nmap <F4> :YcmDiags<CR>
nnoremap <leader>jd :YcmCompleter GoToDefinitionElseDeclaration<CR>     "代码跳转

"vim-autoformat
noremap <F3> :Autoformat<CR><CR>

另外 ~/. ycm_extra_conf.py里的flags数组改一下默认路径,可以加快解析速度

删掉其他不重要的目录,只留几个关键的:

# For a C project, you would set this to 'c' instead of 'c++'.
'-x',
'c++',

'-isystem',
'/usr/include/c++/7.1.0',

'-isystem',
'/usr/local/include/c++/7.1.0/x86_64-pc-linux-gnu',

'-isystem',
'/usr/include',

'-isystem',
'/usr/local/include',

'-isystem',
'/home/delphi/software/boost/boost_1_64_0',

'-I',
'.',
]

 

转载于:https://my.oschina.net/mingyuejingque/blog/480264

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值