ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

VimForCpp离线安装

2022-06-20 14:33:08  阅读:166  来源: 互联网

标签:离线 vim VimForCpp cquery user install home echo 安装


VimForCpp--一键式vim环境安装包
对于可以正常访问公网的机器,直接使用项目提供的安装脚本即可。项目地址:https://gitee.com/HGtz2222/VimForCpp
下面是如何在无法连接外网的机器安装

安装步骤

  1. 根据项目地址将源码压缩包下载,传到不能连接外网的机器
  2. 根据安装脚本,下载依赖项,传到不能连接外网的机器,再修改安装脚本

详细步骤

  1. 下载源码后可以看到安装脚本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,接下来的修改就是针对此文件

  2. 下面是已经修改好的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/

  3. 上述修改完成后,执行bash start.sh /root完成安装即可
  4. 执行source ~/.bashrc更新配置

Tips

遇到问题看安装脚本,对应着报错信息修改即可

标签:离线,vim,VimForCpp,cquery,user,install,home,echo,安装
来源: https://www.cnblogs.com/lnlin/p/16393089.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有