Ubuntu14.04(32bit)配置YouCompleteMe

9 篇文章 0 订阅

0 前言

     在《Ubuntu10.04的vim插件扩展》一文中,有尝试过编译YouCompleteMe,但是由于glibc版本太旧,而且更新失败(详见《Ubuntu10.04升级glibc》),唯有改用Ubuntu14.04来尝试。

1 编译YouCompleteMe

    YouCompleteMe要求vim版本为7.3.584[1]。对于这些Ubuntu14.04都是满足的。关于YouCompleteMe编译,在参考资料[1]中有,特别是其中的“Full Installation Guide”说的比较详细。然而全英文看的有点晕,因此还是要参考一下中文资料[2][3]。关于Vundle和LLVM+Clang内容,见《Ubuntu10.04的vim插件扩展》,这里暂时略去,这里主要说YouCompleteMe的编译和使用。

    关于YouCompleteMe的编译,其实参考资料[2][3]都已经说得很清楚。这里就以参考资料[3]为对比,重点指出在Ubuntu14.04中配置YouCompleteMe时与参考资料[3]说的不一致的地方。

差别1:YouCompleteMe中没有cpp目录

    在参考资料[3]中,编译YouCompleteMe时cmake参数中指定了YouCompleteMe的cpp目录,但是我下载的YouCompleteMe并没有这个目录,根据参考资料[1]的“Full Installation Guide”部分的说明,改为“YouCompleteMe/third_party/ycmd/cpp”。另外,libclang.so的目录也不对,要改下。修改后的cmake参数如下:

cmake -G "Unix Makefiles" \
    ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp \
    -DEXTERNAL_LIBCLANG_PATH=~/llvmsrc/Release+Asserts/lib/libclang.so

注:通过参考资料[1]的地址自己下载的YouCompleteMe源码中,并没有“xxx/ycmd/cpp”目录(ycmd目录是空的),而通过Vundle工具下载的版本则有!

差别2:make ycm_core出错误

    根据参考资料[3]的说明,在“make ycm_support_libs”前,要先“make ycm_core”,结果错误如下:

图1.1

    根据参考资料[1]的“Full Installation Guide”部分的说明,并没有“make ycm_core”这一步,因此直接“make ycm_support_libs”即可!下面是编译成功后的截图:

图1.2

2 配置.vimrc文件

    在参考资料[2][3]中,给出的.vimrc的配置太复杂,但是只有少部分与YoucompleteMe相关,而且和我的需求不一致,因此我将其抽取出来,并做了修改:

let g:ycm_collect_identifiers_from_tags_files = 1
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_global_ycm_extra_conf='~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'

    关于各个选项的作用,在参考资料[1]中有详细的说明。

3 函数自动补全

    YouCompleteMe要实函数的补全,主要有两种方法。

3.1 方法一:Ctrl + space

    参考资料[1]中说到,编辑c族语言时,任何位置下使用Ctrl+space可以提示系统库函数。

3.2 方法二:借助ctags

    关于ctags的用法,在《Ubuntu10.04的vim插件扩展》已经说明。需要注意的是,YouCompleteMe要求ctags生成tags时,要加上“--fields+=l”参数,例如:

ctags -I __THROW \
    --file-scope=yes \
    --langmap=c:+.h \
    --languages=c,c++ \
    --links=yes \
    --c-kinds=+p \
    --fields=+l \
    -f ~/.vim/systags /usr/include/*

    经过测试,在含有中文路径的目录上,不能实现借助tags补全!另外,如果使用-R参数去生成系统文件的tags,将会导致vim反应很慢,而且不能自动补全(这点和《Ubuntu10.04的vim插件扩展》说的的类似),例如:

ctags -I __THROW \
    --file-scope=yes \
    --langmap=c:+.h \
    --languages=c,c++ \
    --links=yes \
    --c-kinds=+p \
    --fields=+l \
    -f -R ~/.vim/systags /usr/include/

    为了解决这个问题,可以为不同的头文件目录生成不同的tags。在上面为/usr/include目录的头文件生成systags的基础上,下面再为/usr/include/i386-linux-gnu/sys目录的头文件生成i386-linux-gnu-systags:

ctags -I __THROW \
    --file-scope=yes \
    --langmap=c:+.h \
    --languages=c,c++ \
    --links=yes \
    --c-kinds=+p \
    --fields=+l \
    -f ~/.vim/i386-linux-gnu-systags /usr/include/i386-linux-gnu/sys/*

    在.vimrc中添加多个tags:

" for ctags
set tags+=~/.vim/systags
set tags+=~/.vim/i386-linux-gnu-systags

4 头文件自动补全

    在第二章配置的最后一项写着:

let g:ycm_global_ycm_extra_conf='~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'

    指的是YouCompleteMe的附加配置文件为.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py,为了使得YouCompletelMe可以对C语言头文件(例如stdio.h)进行自动补全,需要对齐其进行修改。修改结果点击这里下载。

5 拓展

    现在主流的系统都是64位了,因此《Ubuntu14.04(64bit)安装YouCompleteMe》基于64位版的系统重装安装一遍。

参考资料

[1]Valloric/YouCompleteMe_GitHub

[2]Ubuntu13.04配置:Vim+Syntastic+Vundle+YouCompleteMe

[3][笔记]ubuntu 13.04 配置YouCompleteMe

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OneSea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值