目录
YouCompleteMe安装概述
YouCompleteMe 是vim的自动补全插件。补全效果虽远不如商业IDE,但也勉强可用。可以让vim“活起来”。
但YouCompleteMe的安装非常困难,难点有二:
1:YouCompleteMe源码由多个git库拼接而成,均托管在github上。如果你所在的网络屏蔽了github,或者访问github极慢,那么除了拷贝朋友事先下载的完整包以外,就只能放弃安装YouCompleteMe了。
2:YouCompleteMe依赖安装包比较多,并且对安装包版本也有要求。如果你将安装的机器处于公司内网,很有可能root权限是关闭的,这就意味着linux系统下的自动安装命令apt-get、yum均不能使用。况且,如果自动安装命令源中的安装包版本不符合YouCompleteMe要求,就需要你手动寻找安装包版本。
鉴于在有root权限、可顺畅访问github情况下的安装极为简单,所以此篇文章重点叙述如何在无root权限、不可访问github的情况下安装YouCompleteMe。
第一步:下载YouCompleteMe源码
首先,假定你的vim已经用bundle维护vim插件。
如果你可以流畅访问github,那么此步骤就非常简单:
打开.vimrc文件,增加一行
Plugin 'Valloric/YouCompleteMe'
保存。
打开vim,执行命令 :PluginInstall
下载YouCompleteMe源码。
如果不能流畅访问github,可以去Gitee - 基于 Git 的代码托管和研发协作平台 寻找别人最近fork的YouCompleteMe源码,直接git clone 即可。gitee是国内代码托管网站,不存在访问限制。
第二步:拉取YouCompleteMe中的子git库源码
YouCompleteMe由多个git库组装而成,完成下载源码后,首先就要同步下载每个子git库源码:
git clone --recursive 迈克尔盖伦/YouCompleteMe
注意:此命令会拉取每个git库的最新代码。子git库依然会访问github,如果提示无法访问错误,可先行忽略。
完成所有git库同步后,需要执行以下命令以确认完整性:
git submodule update --init --recursive
第三步:预先安装YouCompleteMe依赖库
YouCompleteMe直接依赖四个软件:
Vim 7.4+
python3-dev
cmake
LLVM 7.0.1
1、安装python3、python3-dev
两者不是同一事物。如有root权限,就直接用apt、yum安装即可。如果没有,就需要下载源码单独编译,登上另一个痛苦旅途。
2、安装高于Vim 7.4的版本
不能使用apt、yum安装,因为默认的vim版本不支持python3,而YouCompleteMe需要vim支持python3。
个人测试发现,如果安装python3.10、3.11版本,vim配置脚本就不会正常识别,会识别成3.1,导致最终链接失败。所以建议使用3.9、3.8之类的版本。
建议使用vim 8.2版本源码,配置如下:
./configure
--with-features=huge
--prefix=/home/odin/fengxiuwei
--with-python3-command=python3
--enable-multibyte
--enable-python3interp=yes #支持python3 ,必须
--enable-cscope
--enable-gui=auto
--enable-gtk2-check
--enable-fontset
--enable-largefile
--disable-netbeans
--enable-fail-if-missing
3、安装cmake
cmake版本必须要高于3.14,建议使用3.23的二进制包
4、安装 LLVM 7.0.1
直接将对应系统的二进制包替换到对应的bin、lib目录即可。
http://releases.llvm.org/7.0.1/clang+llvm-7.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz
第四步:保证gcc、g++支持c++17
4.8.5版本gcc、g++是不支持c++17的,需要升级到10.3.0 。
如果apt、yum没有对应版本,就需要手动编译安装gcc、g++,另外还需要手动编译安装glibc库。
安装gcc详见另一篇博客:linux系统下编译安装gcc库_无码散人的博客-CSDN博客
注意:gcc、g++、glibc是系统基础库,千万不要替换系统默认版本,即/usr目录下的lib。要单独建立bin、lib。如若不然,你的操作系统就会直接崩溃,无法使用,切记切记!!!
第五步:正式开始编译YouCompleteMe
顺利安装以上依赖软件后,就可以编译安装YouCompleteMe了。执行以下命令即可:
编译需要支持c++17的新g++,所以需要将新g++所在的目录,包括lib,加到环境变量中:
export PATH=/home/temp_usr/bin:$PATH
export LD_LIBRARY_PATH=/home/temp_usr/lib:$LD_LIBRARY_PATHcmake编译需要明确指定CC、CXX环境变量,按照如下设置,指向新gcc、g++:
export CC=/home/temp_usr/bin/gcc
export CXX=/home/temp_usr/bin/g++开始编译YouCompleteMe:
python3 install.py --all 或者
./install.sh --all
参数 all表示编译所有语言的支持,默认选项
参数clang表示只支持c家族语言
到此,安装YouCompleteMe的所有步骤已完成,你将可以享受苦难的成果了。
个人建议,只要有其他IDE可用,就不要想着安装这个插件。安装复杂是其一,补全效果太低级是其二。
另外,cscope配置关键如下:
cscope号称增强版ctags,可以在字符界面的终端中提供通用的、基本的IDE功能。
使用比较简单。
首先,建议将需要查找的代码文件筛选出来,放到特定文件中,如:cscope.files
然后用cscope基于cscope.files文件生成符号索引:
cscope -kq -i cscope.files -C
另外,cscope使用EDITOR环境变量来决定调用哪个编辑器,默认是:/usr/bin/vim 。
如果你想要在cscope中使用新的vim,就需要明确修改EDITOR环境变量。