1 Star 0 Fork 0

liyinxin / vimplus

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
install.sh 12.73 KB
一键复制 编辑 原始数据 按行查看 历史
chxuan 提交于 2019-10-09 11:57 . update install.sh
#!/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 "Kali" /etc/*-release; then
echo "Kali"
elif grep -Eq "CentOS" /etc/*-release; then
echo "CentOS"
elif grep -Eq "fedora" /etc/*-release; then
echo "fedora"
elif grep -Eq "openSUSE" /etc/*-release; then
echo "openSUSE"
elif grep -Eq "Arch Linux" /etc/*-release; then
echo "ArchLinux"
elif grep -Eq "ManjaroLinux" /etc/*-release; then
echo "ManjaroLinux"
else
echo "Unknow"
fi
}
# 获取日期
function get_datetime()
{
time=$(date "+%Y%m%d%H%M%S")
echo $time
}
# 判断文件是否存在
function is_exist_file()
{
filename=$1
if [ -f $filename ]; then
echo 1
else
echo 0
fi
}
# 判断目录是否存在
function is_exist_dir()
{
dir=$1
if [ -d $dir ]; then
echo 1
else
echo 0
fi
}
#备份原有的.vimrc文件
function backup_vimrc_file()
{
old_vimrc=$HOME"/.vimrc"
is_exist=$(is_exist_file $old_vimrc)
if [ $is_exist == 1 ]; then
time=$(get_datetime)
backup_vimrc=$old_vimrc"_bak_"$time
read -p "Find "$old_vimrc" already exists,backup "$old_vimrc" to "$backup_vimrc"[Y/N]:" ch
if [ $ch == "Y" ] || [ $ch == "y" ]; then
cp $old_vimrc $backup_vimrc
fi
fi
}
#备份原有的.vim目录
function backup_vim_dir()
{
old_vim=$HOME"/.vim"
is_exist=$(is_exist_dir $old_vim)
if [ $is_exist == 1 ]; then
time=$(get_datetime)
backup_vim=$old_vim"_bak_"$time
read -p "Find "$old_vim" already exists,backup "$old_vim" to "$backup_vim"[Y/N]:" ch
if [ $ch == "Y" ] || [ $ch == "y" ]; then
cp -R $old_vim $backup_vim
fi
fi
}
# 备份原有的.vimrc和.vim
function backup_vimrc_and_vim()
{
backup_vimrc_file
backup_vim_dir
}
# 判断是否是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
}
# 判断是否是macos10.14版本
function is_macos1014()
{
product_version=$(sw_vers | grep ProductVersion)
if [[ $product_version =~ "10.14" ]]; 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 ~/vim81
sudo apt-get install -y libncurses5-dev libncurses5 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 ~/vim81
sudo apt-get install -y libncurses5-dev libncurses5 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
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 ~/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()
{
xcode-select --install
brew install vim gcc cmake ctags-exuberant curl ack
macos1014=$(is_macos1014)
if [ $macos1014 == 1 ]; then
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
fi
}
# 安装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
}
# 安装fedora必要软件
function install_prepare_software_on_fedora()
{
sudo dnf install -y vim ctags automake gcc gcc-c++ kernel-devel cmake python-devel python3-devel curl fontconfig ack git
}
# 安装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 install_ycm_on_linux()
{
git clone https://gitee.com/chxuan/YouCompleteMe-clang.git ~/.vim/plugged/YouCompleteMe
cd ~/.vim/plugged/YouCompleteMe
python2.7 ./install.py --clang-completer
}
# 在MacOS上安装ycm插件
function install_ycm_on_mac()
{
git clone https://gitee.com/chxuan/YouCompleteMe-clang.git ~/.vim/plugged/YouCompleteMe
cd ~/.vim/plugged/YouCompleteMe
python2.7 ./install.py --clang-completer
}
# 打印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()
{
backup_vimrc_and_vim
install_prepare_software_on_mac
copy_files
install_fonts_on_mac
install_ycm_on_mac
download_vim_plug
install_vim_plugin
print_logo
}
# 开始安装vimplus
function begin_install_vimplus()
{
copy_files
install_fonts_on_linux
install_ycm_on_linux
download_vim_plug
install_vim_plugin
print_logo
}
# 在ubuntu上安装vimplus
function install_vimplus_on_ubuntu()
{
backup_vimrc_and_vim
install_prepare_software_on_ubuntu
begin_install_vimplus
}
# 在debian上安装vimplus
function install_vimplus_on_debian()
{
backup_vimrc_and_vim
install_prepare_software_on_debian
begin_install_vimplus
}
# 在centos上安装vimplus
function install_vimplus_on_centos()
{
backup_vimrc_and_vim
install_prepare_software_on_centos
begin_install_vimplus
}
# 在fedora上安装vimplus
function install_vimplus_on_fedora()
{
backup_vimrc_and_vim
install_prepare_software_on_fedora
begin_install_vimplus
}
# 在archlinux上安装vimplus
function install_vimplus_on_archlinux()
{
backup_vimrc_and_vim
install_prepare_software_on_archlinux
begin_install_vimplus
}
# 在opensuse上安装vimplus
function install_vimplus_on_opensuse()
{
backup_vimrc_and_vim
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} == "Kali" ]; then
install_vimplus_on_debian
elif [ ${distro} == "CentOS" ]; then
install_vimplus_on_centos
elif [ ${distro} == "fedora" ]; then
install_vimplus_on_fedora
elif [ ${distro} == "openSUSE" ]; then
install_vimplus_on_opensuse
elif [ ${distro} == "ArchLinux" ]; then
install_vimplus_on_archlinux
elif [ ${distro} == "ManjaroLinux" ]; then
install_vimplus_on_archlinux
else
echo "Not support linux distro: "${distro}
fi
}
# 获取当前时间戳
function get_now_timestamp()
{
cur_sec_and_ns=`date '+%s-%N'`
echo ${cur_sec_and_ns%-*}
}
# main函数
function main()
{
begin=`get_now_timestamp`
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
end=`get_now_timestamp`
second=`expr ${end} - ${begin}`
min=`expr ${second} / 60`
echo "It takes "${min}" minutes."
}
# 调用main函数
main
1
https://gitee.com/liyinxin/vimplus.git
git@gitee.com:liyinxin/vimplus.git
liyinxin
vimplus
vimplus
master

搜索帮助