VimForCpp--一键式vim环境安装包
对于可以正常访问公网的机器,直接使用项目提供的安装脚本即可。项目地址:https://gitee.com/HGtz2222/VimForCpp 下面是如何在无法连接外网的机器安装
安装步骤
- 根据项目地址将源码压缩包下载,传到不能连接外网的机器
- 根据安装脚本,下载依赖项,传到不能连接外网的机器,再修改安装脚本
详细步骤
- 下载源码后可以看到安装脚本install.sh
#!/usr/bin/sh
echo "
+------------------------------------------------------+
| |
| VimForCpp |
| |
+------------------------------------------------------+
安装开始!
整个过程大概需要下载大约 200MB 数据. 流量党请慎入!
"
# 切换到 root 用户, 并且触发安装脚本
install_user_home=$HOME
function SwitchRoot() {
echo "为了安装依赖程序, 需要使用 root 账户. 您的密码不会被上传."
echo "请输入 root 密码:"
su -c "curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/start.sh -o /tmp/start.sh && bash /tmp/start.sh $install_user_home"
rm -f /tmp/start.sh > /dev/null 2>&1
}
# 切换到 root 用户
SwitchRoot
此处可以看到安装方式是执行:bash start.sh /root
其中start.sh就是源码包中的./start.sh,接下来的修改就是针对此文件
- 下面是已经修改好的start.sh文件
#!/usr/bin/sh
# set -x
install_user_home=$1
vimforcpp_home=$install_user_home/.VimForCpp
# 是否安装 cquery 标记.
install_cquery_flag=0
function InstallEnv() {
# 检查操作系统版本是否 ok
version_ok=`uname -a | awk '{ if (index($0, "el7.x86_64") > 0) print 1; else print 0;}'`
if [ $version_ok -eq 0 ]; then
echo "操作系统版本不支持! 目前只支持 centos7 x86_64!"
exit 1
fi
# 安装 git
git --version > /dev/null
if [ $? -ne 0 ]; then
echo "未安装 git, 尝试安装 git"
yum -y install git
fi
git --version > /dev/null
if [ $? -ne 0 ]; then
echo "git 安装失败!"
exit 1
fi
# 安装 neovim
echo "尝试安装 neovim"
yum -y install epel-release
yum install -y neovim.x86_64 python36-neovim.noarch
nvim --version
if [ $? -ne 0 ]; then
echo "neovim 安装失败!"
exit 1
fi
# 由于 centos7 yum 源上默认的 neovim 升级到了 neovim 0.3.0, 但是这个版本
# 目前还有问题. 所以仍然需要使用 neovim 0.2.2. 上面的操作只是为了安装 Python 扩展
yum install -y fuse-libs.x86_64 fuse.x86_64
# 敲下 vim 命令实际启动了 nvim
touch $install_user_home/.bashrc
echo "alias vim='$vimforcpp_home/nvim'" >> $install_user_home/.bashrc
# 安装 ctags
yum -y install ctags
# 安装 unzip
yum -y install unzip
echo "环境检测完毕!"
}
function DownloadVimConfig() {
#if [ -d $vimforcpp_home ]; then
# rm -rf $vimforcpp_home
# fi
# git clone https://gitee.com/HGtz2222/VimForCpp.git $vimforcpp_home
if [ $? -ne 0 ]; then
echo "Vim 配置下载出错!"
exit 1
fi
echo "Vim 配置下载完毕"
}
function GetWhiteList() {
# 分析 init.vim 中的插件列表, 获取到白名单内容, 并写入到 git 的对应文件中
initvim=$1/vim/init.vim
whitelist=$2/.git/info/sparse-checkout
awk -F "[/\']" '{ if (index($1, "Plug") == 1) print $3; }' $initvim > $whitelist
if grep -q "YouCompleteMe" $whitelist; then
# 发现白名单中包含了 YCM, 则把对应的动态库的白名单也放进去.
# TODO 后续考虑根据操作系统版本来决定下载哪个库
echo "YCM.zip" >> $whitelist
echo "YCM.so" >> $whitelist
fi
# 发现白名单中包含 cquery, 则需要准备后续的环境变量和安装额外的库
if grep -q "LanguageClient" $whitelist; then
install_cquery_flag=1
fi
}
function DownloadPlugin() {
bundle_dir=$vimforcpp_home/vim/bundle
#mkdir -p $bundle_dir
cd $bundle_dir
# git init
# git remote add -f origin https://gitee.com/HGtz2222/vim-plugin-fork.git
# git config core.sparsecheckout true
GetWhiteList $vimforcpp_home $bundle_dir
# git pull origin master
# 增加对 YCM 的解压缩
# unzip YCM.zip
# cp $bundle_dir/YCM.so/el7.x86_64/* $bundle_dir/YouCompleteMe/third_party/ycmd/
if [ $? -ne 0 ]; then
echo "插件下载失败!"
exit 1
fi
echo "插件下载完毕!"
}
function InstallCQuery() {
# 0. 检查如果不需要安装 cquery 就直接返回
if [ $install_cquery_flag -eq 0 ]; then
return 0;
fi
# 1. 安装依赖的库
if [ ! -f /usr/lib64/libatomic.so.1 ]; then
echo "未找到 libstdatomic, 尝试安装..."
yum install -y libatomic.x86_64
fi
# 2. 添加环境变量
if ! grep -q ".VimForCpp/vim/bundle/YCM.so/el7.x86_64" $install_user_home/.bashrc; then
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/.VimForCpp/vim/bundle/YCM.so/el7.x86_64' >> $install_user_home/.bashrc
fi
# 3. 准备临时目录
if [ -d /tmp/cquery -o -f /tmp/cquery ]; then
rm -rf /tmp/cquery
fi
mkdir /tmp/cquery
mkdir /tmp/cquery/cache
cp $vimforcpp_home/cquery/config/settings.json /tmp/cquery/
}
function LinkDir() {
# 先备份原有的 vim 配置文件
today=`date +%m%d`
mv $install_user_home/.vim $install_user_home/.vim.bak_${today} 2>/dev/null
mv $install_user_home/.vimrc $install_user_home/.vimrc.bak_${today} 2>/dev/null
mv $install_user_home/.ycm_extra_conf.py $install_user_home/.ycm_extra_conf.py.bak_${today} 2>/dev/null
# 创建需要的软连接
mkdir -p $install_user_home/.config
rm -f $install_user_home/.config/nvim
ln -s $vimforcpp_home/vim $install_user_home/.config/nvim
ln -s $vimforcpp_home/vim $install_user_home/.vim
ln -s $vimforcpp_home/vim/init.vim $install_user_home/.vimrc
ln -s $vimforcpp_home/ycm_extra_conf.py $install_user_home/.ycm_extra_conf.py
# 修改文件拥有者, 获得权限
install_user=`echo $install_user_home | awk -F '/' '{print $3}'`
chown -R $install_user:$install_user $vimforcpp_home
chown -R $install_user:$install_user $install_user_home/.config/nvim
chown -R $install_user:$install_user $install_user_home/.vim
chown -R $install_user:$install_user $install_user_home/.vimrc
chown -R $install_user:$install_user $install_user_home/.ycm_extra_conf.py
chown -R $install_user:$install_user $vimforcpp_home/nvim
if [ $install_cquery_flag -eq 1 ]; then
chown -R $install_user:$install_user /tmp/cquery
ln -s $vimforcpp_home/cquery/config/cquery.config $install_user_home/.cquery
chown -R $install_user:$install_user $install_user_home/.cquery
fi
}
# 1. 检查并安装依赖的软件
InstallEnv
# 2. 从码云上下载 vim 配置
DownloadVimConfig
# 3. 从码云上下载依赖的插件
DownloadPlugin
# 4. 决定是否安装 cquery
InstallCQuery
# 5. 备份对应用户的 .vim 目录, 并且建立好连接, 并修改文件权限
LinkDir
echo '安装成功! 请手动执行 "source ~/.bashrc" 或者重启终端, 使 vim 配置生效!'
修改项
a. 将VimForCpp下的所有文件放到/root/.VimForCpp下
b. 下载这个项目:https://gitee.com/HGtz2222/vim-plugin-fork.git压缩包,传到不能连接公网的机器,并将此压缩包下所有文件放在/root/.VimForCpp/vim/bundle下面 c. 将刚才拷贝过来的文件中,YCM.zip文件解压缩
d. cp /root/.VimForCpp/vim/bundle/YCM.so/el7.x86_64/* /root/.VimForCpp/vim/bundle/YouCompleteMe/third_party/ycmd/
- 上述修改完成后,执行bash start.sh /root完成安装即可
- 执行source ~/.bashrc更新配置
Tips
遇到问题看安装脚本,对应着报错信息修改即可,使用的时候注意前缀键是 空格,后续具体使用可以按了空格后看提示即可
转载请注明出处