# VIM神级补全插件YouCompleteMe安装详细步骤
YouCompleteMe(以下简称YCM)是Google搜索组程序员Valloric开发的VIM代码自动补全插件,与其它补全插件相比,最大的特点是能够基于语义完成补全,支持多种语言(智能补全支持Python/C家族/JS/Rust等)。对于C/C++语言,该插件能够利用Clang前端编译器的语义补全接口对当前代码产生符合上下文的智能补全提示,且其补全结果排名应用了搜索引擎的结果排序技术。
效果如下
该插件是属于用VIM编码的杀手级插件,使用该插件以后,自动完成功能秒杀sublime text,notepad++等文本编辑器,直逼Visual Studio.
虽然好用,但是该插件出了名的难装,因为需要自己编译。
关于如何从Clang源码开始安装该插件,网上有数篇blog解释了具体步骤,但是经过一一实验,由于系统环境不同,全部失败了。为了安装该插件,本人找资料、编译(共编译了cmake 3.4.3/gcc 4.8.2/llvm 3.9/glibc 2.21/YCM等5个组件,历时大半天)。 整个安装配置过程前后花了至少一天半,现将安装的曲折过程全程记录如下。
安装编译过程主要参考了以下两篇资料
Full Installation Guide
compile-llvm-against-a-custom-glibc
系统环境
$ rpm --query centos-release
centos-release-6-4.el6.centos.10.x86_64
$ gcc --version # 原版本4.4, 后来自己手动编译了4.8以支持C++ 11
gcc (GCC) 4.8.2 20140120 (Red Hat 4.8.2-15)
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
第一次尝试
第一次安装不使用完全安装,直接按照YCM官网的指南直接输入
python install.py --clang-completer
python run_tests.py
结果编译链接过程出现以下错误
[ 98%] Building CXX object ycm/tests/CMakeFiles/ycm_core_tests.dir/main.cpp.o
[100%] Building CXX object ycm/tests/CMakeFiles/ycm_core_tests.dir/TestUtils.cpp.o
Linking CXX executable ycm_core_tests
../../clang+llvm-3.6.0-x86_64-linux-gnu/lib/libclang.so: undefined reference to `posix_spawn@GLIBC_2.15'
../../clang+llvm-3.6.0-x86_64-linux-gnu/lib/libclang.so: undefined reference to `memcpy@GLIBC_2.14'
collect2: error: ld returned 1 exit status
make[3]: *** [ycm/tests/ycm_core_tests] Error 1
make[2]: *** [ycm/tests/CMakeFiles/ycm_core_tests.dir/all] Error