Ubuntu14.04(32bit)配置YouCompleteMe

一、编译YouCompleteMe

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

    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,结果错误如下:

Ubuntu14.04(32bit)配置YouCompleteMe_第1张图片

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


二、配置.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]中有详细的说明。

三、函数自动补全

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

方法一:Ctrl + space

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

方法二:借助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

五、头文件自动补全

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

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)进行自动补全,需要对齐其进行修改。修改结果点击 这里下载。

参考资料

[1]Valloric/YouCompleteMe_GitHub

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

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

你可能感兴趣的:(Ubuntu14.04(32bit)配置YouCompleteMe)