402 lines
10 KiB
Bash
Executable File
402 lines
10 KiB
Bash
Executable File
#!/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 "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
|
||
|
||
curl https://ftp.nluug.nl/pub/vim/unix/vim-8.1.tar.bz2 -o ~/vim.tar.bz2
|
||
tar -xvf ~/vim.tar.bz2 -C ~
|
||
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
|
||
|
||
curl https://ftp.nluug.nl/pub/vim/unix/vim-8.1.tar.bz2 -o ~/vim.tar.bz2
|
||
tar -xvf ~/vim.tar.bz2 -C ~
|
||
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
|
||
|
||
curl https://ftp.nluug.nl/pub/vim/unix/vim-8.1.tar.bz2 -o ~/vim.tar.bz2
|
||
tar -xvf ~/vim.tar.bz2 -C ~
|
||
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 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 ctags build-essential python python-dev python3-dev fontconfig curl libfile-next-perl ack-grep 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 bzip2 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
|
||
}
|
||
|
||
# 安装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} == "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
|