#!/bin/bash # 获取平台类型,mac还是linux平台 function get_platform_type() { echo $(uname) } # 获取linux发行版名称 function get_linux_distro() { if grep -Eq "Ubuntu" /etc/*-release; then echo "Ubuntu" elif grep -Eq "Deepin" /etc/*-release; then echo "Deepin" elif grep -Eq "LinuxMint" /etc/*-release; then echo "LinuxMint" elif grep -Eq "elementary" /etc/*-release; then echo "elementaryOS" elif grep -Eq "Debian" /etc/*-release; then echo "Debian" elif grep -Eq "CentOS" /etc/*-release; then echo "CentOS" elif grep -Eq "openSUSE" /etc/*-release; then echo "openSUSE" elif grep -Eq "Arch Linux" /etc/*-release; then echo "ArchLinux" else echo "Unknow" fi } # 判断是否是ubuntu14.04LTS版本 function is_ubuntu1404() { version=$(cat /etc/lsb-release | grep "DISTRIB_RELEASE") if [ ${version} == "DISTRIB_RELEASE=14.04" ]; then echo 1 else echo 0 fi } # 在ubuntu上源代码安装vim function compile_vim_on_ubuntu() { sudo apt-get remove -y vim vim-runtime gvim sudo apt-get remove -y vim-tiny vim-common vim-gui-common vim-nox sudo rm -rf /usr/bin/vim* sudo rm -rf /usr/local/bin/vim* sudo rm -rf /usr/share/vim/vim* sudo rm -rf /usr/local/share/vim/vim* rm -rf ~/vim.tar.bz2 rm -rf ~/vim81 sudo apt-get install -y libncurses5-dev libgnome2-dev libgnomeui-dev \ libgtk2.0-dev libatk1.0-dev libbonoboui2-dev \ libcairo2-dev libx11-dev libxpm-dev libxt-dev python-dev python3-dev ruby-dev lua5.1 lua5.1-dev git clone https://gitee.com/chxuan/vim81.git ~/vim81 cd ~/vim81 ./configure --with-features=huge \ --enable-multibyte \ --enable-rubyinterp \ --enable-pythoninterp \ --with-python-config-dir=/usr/lib/python2.7/config-x86_64-linux-gnu \ --enable-perlinterp \ --enable-luainterp \ --enable-gui=gtk2 \ --enable-cscope \ --prefix=/usr make sudo make install cd - } # 在debian上源代码安装vim function compile_vim_on_debian() { sudo apt-get remove -y vim vim-runtime gvim sudo apt-get remove -y vim-tiny vim-common vim-gui-common vim-nox sudo rm -rf /usr/bin/vim* sudo rm -rf /usr/local/bin/vim* sudo rm -rf /usr/share/vim/vim* sudo rm -rf /usr/local/share/vim/vim* rm -rf ~/vim.tar.bz2 rm -rf ~/vim81 sudo apt-get install -y libncurses5-dev libgtk2.0-dev libatk1.0-dev libcairo2-dev libx11-dev libxpm-dev libxt-dev python-dev python3-dev ruby-dev lua5.1 lua5.1-dev sudo ln -s /lib/x86_64-linux-gnu/libtinfo.so.6 /usr/lib/libtinfo.so.5 git clone https://gitee.com/chxuan/vim81.git ~/vim81 cd ~/vim81 ./configure --with-features=huge \ --enable-multibyte \ --enable-rubyinterp \ --enable-pythoninterp \ --with-python-config-dir=/usr/lib/python2.7/config-x86_64-linux-gnu \ --enable-perlinterp \ --enable-luainterp \ --enable-gui=gtk2 \ --enable-cscope \ --prefix=/usr make sudo make install cd - } # 在centos上源代码安装vim function compile_vim_on_centos() { sudo rm -rf /usr/bin/vi sudo rm -rf /usr/bin/vim* sudo rm -rf /usr/local/bin/vim* sudo rm -rf /usr/share/vim/vim* sudo rm -rf /usr/local/share/vim/vim* rm -rf ~/vim.tar.bz2 rm -rf ~/vim81 sudo yum install -y ruby ruby-devel lua lua-devel luajit \ luajit-devel ctags git python python-devel \ python34 python34-devel tcl-devel \ perl perl-devel perl-ExtUtils-ParseXS \ perl-ExtUtils-XSpp perl-ExtUtils-CBuilder \ perl-ExtUtils-Embed libX11-devel ncurses-devel git clone https://gitee.com/chxuan/vim81.git ~/vim81 cd ~/vim81 ./configure --with-features=huge \ --enable-multibyte \ --with-tlib=tinfo \ --enable-rubyinterp=yes \ --enable-pythoninterp=yes \ --with-python-config-dir=/lib64/python2.7/config \ --enable-perlinterp=yes \ --enable-luainterp=yes \ --enable-gui=gtk2 \ --enable-cscope \ --prefix=/usr make sudo make install cd - } # 安装mac平台必要软件 function install_prepare_software_on_mac() { brew install vim gcc cmake ctags-exuberant curl ack } # 安装ubuntu必要软件 function install_prepare_software_on_ubuntu() { sudo apt-get update ubuntu1404=`is_ubuntu1404` if [ ${ubuntu1404} == 1 ]; then sudo apt-get install -y cmake3 else sudo apt-get install -y cmake fi sudo apt-get install -y exuberant-ctags build-essential python python-dev python3-dev fontconfig curl libfile-next-perl ack-grep git compile_vim_on_ubuntu } # 安装debian必要软件 function install_prepare_software_on_debian() { sudo apt-get update sudo apt-get install -y cmake exuberant-ctags build-essential python python-dev python3-dev fontconfig curl libfile-next-perl ack git compile_vim_on_debian } # 安装centos必要软件 function install_prepare_software_on_centos() { sudo yum install -y ctags automake gcc gcc-c++ kernel-devel cmake python-devel python3-devel curl fontconfig ack git compile_vim_on_centos } # 安装archlinux必要软件 function install_prepare_software_on_archlinux() { sudo pacman -S --noconfirm vim ctags automake gcc cmake python3 python2 curl ack git fontconfig sudo ln -s /usr/lib/libtinfo.so.6 /usr/lib/libtinfo.so.5 } # 安装opensuse必要软件 function install_prepare_software_on_opensuse() { sudo zypper install -y vim ctags gcc gcc-c++ cmake python-devel python3-devel curl ack fontconfig git ncurses5-devel } # 拷贝文件 function copy_files() { rm -rf ~/.vimrc ln -s ${PWD}/.vimrc ~ rm -rf ~/.vimrc.local cp ${PWD}/.vimrc.local ~ rm -rf ~/.ycm_extra_conf.py ln -s ${PWD}/.ycm_extra_conf.py ~ mkdir ~/.vim rm -rf ~/.vim/colors ln -s ${PWD}/colors ~/.vim rm -rf ~/.vim/ftplugin ln -s ${PWD}/ftplugin ~/.vim } # 安装mac平台字体 function install_fonts_on_mac() { rm -rf ~/Library/Fonts/Droid\ Sans\ Mono\ Nerd\ Font\ Complete.otf cp ./fonts/Droid\ Sans\ Mono\ Nerd\ Font\ Complete.otf ~/Library/Fonts } # 安装linux平台字体 function install_fonts_on_linux() { mkdir ~/.fonts rm -rf ~/.fonts/Droid\ Sans\ Mono\ Nerd\ Font\ Complete.otf cp ./fonts/Droid\ Sans\ Mono\ Nerd\ Font\ Complete.otf ~/.fonts fc-cache -vf ~/.fonts } # 下载插件管理软件vim-plug function download_vim_plug() { curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim } # 安装vim插件 function install_vim_plugin() { vim -c "PlugInstall" -c "q" -c "q" } # linux编译ycm插件 function compile_ycm_on_linux() { cd ~/.vim/plugged/YouCompleteMe ./install.py --clang-completer } # macos编译ycm, 原始方法 function compile_ycm_on_mac_legacy() { cd ~/.vim/plugged/YouCompleteMe ./install.py --clang-completer --system-libclang } # macos编译ycm, Mojave上的方法 function compile_ycm_on_mac_mojave() { echo "Installing macOS_10.14 sdk headers..." xcode-select --install open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg cd ~/.vim/plugged/YouCompleteMe ./install.py --clang-completer } # 在MacOS上编译ycm function compile_ycm_on_mac() { product_version=$(sw_vers | grep ProductVersion) version=${product_version#*:} main_version=${version%.*} if [ ${main_version} == "10.14" ]; then compile_ycm_on_mac_mojave else compile_ycm_on_mac_legacy fi } # 打印logo function print_logo() { color="$(tput setaf 6)" normal="$(tput sgr0)" printf "${color}" echo ' __ __ ' echo '__ __/_/___ ___ ____ / /_ _______ ' echo '\ \ / / / __ `__ \/ __ \/ / / / / ___/ ' echo ' \ V / / / / / / / /_/ / / /_/ (__ ) ' echo ' \_/_/_/ /_/ /_/ ,___/_/\____/____/ ' echo ' /_/ ...is now installed!' echo '' echo '' echo 'Just enjoy it!' echo 'p.s. Follow me at https://github.com/chxuan.' echo '' printf "${normal}" } # 在mac平台安装vimplus function install_vimplus_on_mac() { install_prepare_software_on_mac copy_files install_fonts_on_mac download_vim_plug install_vim_plugin compile_ycm_on_mac print_logo } # 开始安装vimplus function begin_install_vimplus() { copy_files install_fonts_on_linux download_vim_plug install_vim_plugin compile_ycm_on_linux print_logo } # 在ubuntu上安装vimplus function install_vimplus_on_ubuntu() { install_prepare_software_on_ubuntu begin_install_vimplus } # 在debian上安装vimplus function install_vimplus_on_debian() { install_prepare_software_on_debian begin_install_vimplus } # 在centos上安装vimplus function install_vimplus_on_centos() { install_prepare_software_on_centos begin_install_vimplus } # 在archlinux上安装vimplus function install_vimplus_on_archlinux() { install_prepare_software_on_archlinux begin_install_vimplus } # 在opensuse上安装vimplus function install_vimplus_on_opensuse() { install_prepare_software_on_opensuse begin_install_vimplus } # 在linux平上台安装vimplus function install_vimplus_on_linux() { distro=`get_linux_distro` echo "Linux distro: "${distro} if [ ${distro} == "Ubuntu" ]; then install_vimplus_on_ubuntu elif [ ${distro} == "Deepin" ]; then install_vimplus_on_ubuntu elif [ ${distro} == "LinuxMint" ]; then install_vimplus_on_ubuntu elif [ ${distro} == "elementaryOS" ]; then install_vimplus_on_ubuntu elif [ ${distro} == "Debian" ]; then install_vimplus_on_debian elif [ ${distro} == "CentOS" ]; then install_vimplus_on_centos elif [ ${distro} == "openSUSE" ]; then install_vimplus_on_opensuse elif [ ${distro} == "ArchLinux" ]; then install_vimplus_on_archlinux else echo "Not support linux distro: "${distro} fi } # main函数 function main() { type=`get_platform_type` echo "Platform type: "${type} if [ ${type} == "Darwin" ]; then install_vimplus_on_mac elif [ ${type} == "Linux" ]; then install_vimplus_on_linux else echo "Not support platform type: "${type} fi } # 调用main函数 main