#!/bin/bash
export BUNDLE_DIR_PATH=~/.vim/bundle
export VIMRC_FILE_PATH=~/.vimrc
export TEMP_DOWNLOAD_DIR_PATH=~/vim_plugin_installer_temp_dir
rm ~/.vimrc
# 通过apt安装部分插件
# 1. cscope
sudo apt-get install cscope -y
if [ $? -eq 0 ]; then
echo "install cscope success!"
else
echo "install cscope failed!"
fi
# 2. YouCompleteMe
sudo apt install vim-youcompleteme -y && vim-addon-manager install youcompleteme
if [ $? -eq 0 ]; then
echo "install youcompleteme success!"
else
echo "install youcompleteme failed!"
fi
# 3. powerline字体安装
mkdir -p $TEMP_DOWNLOAD_DIR_PATH
pushd $TEMP_DOWNLOAD_DIR_PATH
if [ ! -d "fonts" ]; then
git clone https://github.com/powerline/fonts.git
cd fonts
./install.sh
popd
fi
popd
# 通过Plugin安装部分插件
# 1. Vundle
if [ ! -d "$BUNDLE_DIR_PATH" ]; then
echo "Create bundle dir"
mkdir -p $BUNDLE_DIR_PATH
pushd $BUNDLE_DIR_PATH
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
popd
fi
# 追加vimrc配置
# 1. Vundle配置
cat << EOF >> $VIMRC_FILE_PATH
" Vundle参数配置
set nocompatible
filetype off
" 设置包括 vundle 和初始化相关的 runtimepath
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" 另一种选择, 指定一个 vundle 安装插件的路径
"call vundle#begin('~/some/path/here')
" 让 vundle 管理插件版本,必须
Plugin 'VundleVim/Vundle.vim'
" 所有插件需要在下面这行之前配置
call vundle#end() " 必须
filetype plugin indent on " 必须 加载vim自带和插件相应的语法和文件类型相关脚本
" 忽视插件改变缩进,可以使用以下替代:
"filetype plugin on
EOF
# 2. molokai主题安装
cat << EOF >> $VIMRC_FILE_PATH
" molokai theme plugin
Plugin 'tomasr/molokai'
colorscheme molokai "设置颜色主题"
set t_Co=256 "设置256色彩"
set background=dark
let g:molokai_original = 1
let g:rehash256 = 1
EOF
# 3. nerdtree目录树插件
cat << EOF >> $VIMRC_FILE_PATH
" nerdtree
Plugin 'scrooloose/nerdtree'
nmap <C-t> :NERDTreeToggle<cr> "打开目录树"
nmap <C-f> :NERDTreeFind<cr> "查找文件"
EOF
# 4. vim-arline状态栏美化插件
cat << EOF >> $VIMRC_FILE_PATH
" vim-arline
Plugin 'vim-airline/vim-airline'
let g:airline_powerline_fonts=1
let g:airline#extensions#tabline#enabled = 1 "tabline中当前buffer两端的分隔字符
nmap <tab> :bn<cr> " 设置tab键映射"
EOF
echo "请运行vim,并执行PluginInstall"
v0.2
#!/bin/bash
#set -x
function init_env() {
export BUNDLE_DIR_PATH=~/.vim/bundle
export VIMRC_FILE_PATH=~/.vimrc
export TEMP_DOWNLOAD_DIR_PATH=~/vim_plugin_installer_temp_dir
export DEFAULT_VIMRC_FILE_PATH=~/.vimrc
export DEFAULT_VIMRC_BACKUP_FILE_PATH=~/.vimrc_$(whoami).bak
}
function delete_orig_vimrc() {
if [ -f $DEFAULT_VIMRC_FILE_PATH ]; then
rm $DEFAULT_VIMRC_FILE_PATH
fi
}
function _backup_vimrc() {
cp $DEFAULT_VIMRC_FILE_PATH $1
}
function backup_vimrc() {
cp $DEFAULT_VIMRC_FILE_PATH $DEFAULT_VIMRC_BACKUP_FILE_PATH
echo -e "\033[47;30m备份文件路径: $DEFAULT_VIMRC_BACKUP_FILE_PATH \033[0m"
<<EOF
echo -n "请输入备份文件路径(eg: ~/.vimrc.bak) > "
read back_vimrc_path
echo $DEFAULT_VIMRC_BACKUP_FILE_PATH
if [ ! -n "$back_vimrc_path" ]; then
mv $DEFAULT_VIMRC_FILE_PATH $DEFAULT_VIMRC_BACKUP_FILE_PATH
else
_backup_vimrc $back_vimrc_path
fi
EOF
print_command_result "backup .vimrc file"
}
function print_command_result() {
if [ $? -eq 0 ]; then
echo -e "\033[47;30mInstall $1 success! \033[0m"
else
echo -e "\033[47;30mInstall $1 failed! \033[0m"
exit 1
fi
}
function apt_install_plugin() {
# 通过apt安装部分插件
# 1. cscope
sudo apt-get install cscope -y
print_command_result "cscope"
# 2. YouCompleteMe
sudo apt install vim-youcompleteme -y && vim-addon-manager install youcompleteme
print_command_result "youcompleteme"
}
function git_install_plugin() {
# 3. powerline字体安装
mkdir -p $TEMP_DOWNLOAD_DIR_PATH
pushd $TEMP_DOWNLOAD_DIR_PATH
if [ ! -d "fonts" ]; then
git clone https://github.com/powerline/fonts.git
cd fonts
./install.sh
popd
print_command_result "powerline"
fi
popd
# 通过Plugin安装部分插件
# 1. Vundle
if [ ! -f "$BUNDLE_DIR_PATH/Vundle.vim" ]; then
echo "Create bundle dir"
mkdir -p $BUNDLE_DIR_PATH
pushd $BUNDLE_DIR_PATH
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
popd
print_command_result "Vundle"
fi
}
function append_base_conf() {
cat << EOF >> $VIMRC_FILE_PATH
set nu " 开启行号
set ts=4 " 设置缩进间隔为4
set autoindent " 设置自动缩进
syntax on " 设置语法高亮
EOF
}
function append_vundle_conf() {
# 1. Vundle配置
cat << EOF >> $VIMRC_FILE_PATH
" Vundle参数配置
set nocompatible
filetype off
" 设置包括 vundle 和初始化相关的 runtimepath
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" 另一种选择, 指定一个 vundle 安装插件的路径
"call vundle#begin('~/some/path/here')
" 让 vundle 管理插件版本,必须
Plugin 'VundleVim/Vundle.vim'
" 所有插件需要在下面这行之前配置
call vundle#end() " 必须
filetype plugin indent on " 必须 加载vim自带和插件相应的语法和文件类型相关脚本
" 忽视插件改变缩进,可以使用以下替代:
"filetype plugin on
EOF
}
function append_molokai_conf() {
# 2. molokai主题安装
cat << EOF >> $VIMRC_FILE_PATH
" molokai theme plugin
Plugin 'tomasr/molokai'
colorscheme molokai "设置颜色主题"
set t_Co=256 "设置256色彩"
set background=dark
let g:molokai_original = 1
let g:rehash256 = 1
EOF
}
function append_nerdtree_conf() {
# 3. nerdtree目录树插件
cat << EOF >> $VIMRC_FILE_PATH
" nerdtree
Plugin 'scrooloose/nerdtree'
nmap <C-t> :NERDTreeToggle<cr> "打开目录树"
nmap <C-f> :NERDTreeFind<cr> "查找文件"
EOF
}
function append_vim_arline_conf() {
# 4. vim-arline状态栏美化插件
cat << EOF >> $VIMRC_FILE_PATH
" vim-arline
Plugin 'vim-airline/vim-airline'
let g:airline_powerline_fonts=1
let g:airline#extensions#tabline#enabled = 1 "tabline中当前buffer两端的分隔字符
nmap <tab> :bn<cr> " 设置tab键映射"
EOF
}
function append_all_conf() {
append_base_conf
append_vundle_conf
append_molokai_conf
append_nerdtree_conf
append_vim_arline_conf
}
function print_finish_tips() {
echo -e "\033[47;30m请运行vim,并执行PluginInstall \033[0m"
}
function work_func() {
init_env
backup_vimrc
delete_orig_vimrc
apt_install_plugin
git_install_plugin
append_all_conf
if [ $? -eq 0 ]; then
print_finish_tips
fi
}
function print_start_tips() {
echo -e "\033[2J" # 清屏
echo "使用本工具会重置vim原有配置"
read -p "确定使用本工具吗[Y/N] > " select
case $select in
"Y") echo -e "\033[47;30m你牛逼 \033[0m";
work_func;;
"N") echo -e "\033[47;30m你怂了 ByeBye\033[0m";
exit 1;;
*) echo -e "\033[47;30m没有这个选项啦 \033[0m";
read -p "输入任意键重新输入";
echo -e "\033[2J";
print_start_tips;;
esac
}
print_start_tips
#!/bin/bash
#set -x
function init_env() {
export BUNDLE_DIR_PATH=~/.vim/bundle
export VIMRC_FILE_PATH=~/.vimrc
export TEMP_DOWNLOAD_DIR_PATH=~/vim_plugin_installer_temp_dir
export DEFAULT_VIMRC_FILE_PATH=~/.vimrc
export DEFAULT_VIMRC_BACKUP_FILE_PATH=~/.vimrc_$(whoami).bak
}
function delete_orig_vimrc() {
if [ -f $DEFAULT_VIMRC_FILE_PATH ]; then
rm $DEFAULT_VIMRC_FILE_PATH
fi
}
function _backup_vimrc() {
cp $DEFAULT_VIMRC_FILE_PATH $1
}
function backup_vimrc() {
cp $DEFAULT_VIMRC_FILE_PATH $DEFAULT_VIMRC_BACKUP_FILE_PATH
echo -e "\033[47;30m备份文件路径: $DEFAULT_VIMRC_BACKUP_FILE_PATH \033[0m"
<<EOF
echo -n "请输入备份文件路径(eg: ~/.vimrc.bak) > "
read back_vimrc_path
echo $DEFAULT_VIMRC_BACKUP_FILE_PATH
if [ ! -n "$back_vimrc_path" ]; then
mv $DEFAULT_VIMRC_FILE_PATH $DEFAULT_VIMRC_BACKUP_FILE_PATH
else
_backup_vimrc $back_vimrc_path
fi
EOF
print_command_result "backup .vimrc file"
}
function print_command_result() {
if [ $? -eq 0 ]; then
echo -e "\033[47;30mInstall $1 success! \033[0m"
else
echo -e "\033[47;30mInstall $1 failed! \033[0m"
exit 1
fi
}
function apt_install_plugin() {
# 通过apt安装部分插件
# 1. cscope
sudo apt-get install cscope -y
print_command_result "cscope"
# 2. YouCompleteMe
sudo apt install vim-youcompleteme -y && vim-addon-manager install youcompleteme
print_command_result "youcompleteme"
# 3. ctags
sudo apt-get install exuberant-ctags
print_command_result "ctags"
# 4. tmux
sudo apt-get install tmux
print_command_result "tmux"
}
function git_install_plugin() {
# 3. powerline字体安装
mkdir -p $TEMP_DOWNLOAD_DIR_PATH
pushd $TEMP_DOWNLOAD_DIR_PATH
if [ ! -d "fonts" ]; then
git clone https://github.com/powerline/fonts.git
cd fonts
./install.sh
popd
print_command_result "powerline"
fi
popd
# 通过Plugin安装部分插件
# 1. Vundle
if [ ! -d $BUNDLE_DIR_PATH/Vundle.vim ]; then
echo "Create bundle dir"
mkdir -p $BUNDLE_DIR_PATH
pushd $BUNDLE_DIR_PATH
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
popd
print_command_result "Vundle"
fi
# 2. taglist
if [ ! -d $HOME/.vim/pack/downloads/start/taglist ]; then
mkdir -p $HOME/.vim/pack/downloads/start
pushd $HOME/.vim/pack/downloads/start
git clone https://github.com/yegappan/taglist
popd
print_command_result "taglist"
fi
}
function curl_install_plugin() {
curl http://www.vim.org/scripts/download_script.php?src_id=7701 > ~/.vim/taglist.zip
pushd ~/.vim
unzip taglist.zip
popd
print_command_result "ctags"
}
function append_base_conf() {
cat << EOF >> $VIMRC_FILE_PATH
set nu " 开启行号
set ts=4 " 设置缩进间隔为4
set autoindent " 设置自动缩进
syntax on " 设置语法高亮
EOF
}
function append_vundle_conf() {
# 1. Vundle配置
cat << EOF >> $VIMRC_FILE_PATH
" Vundle参数配置
set nocompatible
filetype off
" 设置包括 vundle 和初始化相关的 runtimepath
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" 另一种选择, 指定一个 vundle 安装插件的路径
"call vundle#begin('~/some/path/here')
" 让 vundle 管理插件版本,必须
Plugin 'VundleVim/Vundle.vim'
" 所有插件需要在下面这行之前配置
call vundle#end() " 必须
filetype plugin indent on " 必须 加载vim自带和插件相应的语法和文件类型相关脚本
" 忽视插件改变缩进,可以使用以下替代:
"filetype plugin on
EOF
}
function append_molokai_conf() {
# 2. molokai主题安装
cat << EOF >> $VIMRC_FILE_PATH
" molokai theme plugin
Plugin 'tomasr/molokai'
colorscheme molokai "设置颜色主题"
set t_Co=256 "设置256色彩"
set background=dark
let g:molokai_original = 1
let g:rehash256 = 1
EOF
}
function append_solarized_conf() {
# 2. molokai主题安装
cat << EOF >> $VIMRC_FILE_PATH
" vim-colors-solarized theme plugin
Plugin 'altercation/vim-colors-solarized'
set background=dark
set t_Co=256
colorscheme solarized
EOF
}
function append_tokyonight_conf() {
# tokyonight主题安装
cat << EOF >> $VIMRC_FILE_PATH
Plugin 'ghifarit53/tokyonight-vim'
set termguicolors
set t_Co=256 "设置256色彩"
let g:tokyonight_style = 'storm' " available: night, storm
let g:tokyonight_enable_italic = 1
let g:rehash256 = 1
colorscheme tokyonight
let g:tokyonight_transparent_background = 1
EOF
}
function append_tomorrow_conf() {
# 2. tomorrow主题安装
cat << EOF >> $VIMRC_FILE_PATH
" vim-tomorrow theme plugin
Plugin 'chriskempson/vim-tomorrow-theme-all-too-well'
EOF
}
function append_zenburn_conf() {
# 2. tomorrow主题安装
cat << EOF >> $VIMRC_FILE_PATH
" zenburn theme plugin
Plugin 'jnurmine/Zenburn'
colorscheme zenburn
EOF
}
function append_seoul256_theme_conf() {
cat << EOF >> $VIMRC_FILE_PATH
Plugin 'junegunn/seoul256.vim'
colorscheme seoul256
EOF
}
function append_default_theme_conf() {
cat << EOF >> $VIMRC_FILE_PATH
colorscheme industry
EOF
}
function append_nerdtree_conf() {
# 3. nerdtree目录树插件
cat << EOF >> $VIMRC_FILE_PATH
" nerdtree
Plugin 'scrooloose/nerdtree'
nmap <C-t> :NERDTreeToggle<cr> "打开目录树"
nmap <C-f> :NERDTreeFind<cr> "查找文件"
EOF
}
function append_vim_arline_conf() {
# 4. vim-arline状态栏美化插件
cat << EOF >> $VIMRC_FILE_PATH
" vim-arline
Plugin 'vim-airline/vim-airline'
Plugin 'vim-airline/vim-airline-themes' " 主题插件
let g:airline_powerline_fonts=1
let g:airline_theme='angr'
let g:airline#extensions#tabline#enabled = 1 "tabline中当前buffer两端的分隔字符
nmap <tab> :bn<cr> " 设置tab键映射"
EOF
}
function append_ctags_conf() {
cat << EOF >> $VIMRC_FILE_PATH
" 配置 taglist 插件
nmap <F8> :TlistToggle<CR>
let Tlist_Close_On_Select = 1
let Tlist_Use_Right_Window = 1
EOF
}
function append_indent_line_conf() {
cat << EOF >> $VIMRC_FILE_PATH
" 配置自动缩进插件
Plugin 'Yggdroot/indentLine'
let g:indentLine_char='┆' "缩进指示线符
let g:indentLine_enabled = 1 "开启缩进指示
let g:indentLine_setColors = 0 "设置缩进线颜色
EOF
}
function append_cscope_conf() {
cat << EOF >> $VIMRC_FILE_PATH
" usage: cscope -Rbqk
if has("cscope")
set csprg=$(which cscope)
set csto=0
set cst
set nocsverb
" add any database in current directory
if filereadable("cscope.out")
cs add cscope.out
" else add database pointed to by environment
"elseif $CSCOPE_DB != ""
" cs add $CSCOPE_DB
endif
set csverb
endif
nmap <C-@>s :cs find s <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>c :cs find c <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>t :cs find t <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>e :cs find e <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
nmap <C-@>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
nmap <C-@>d :cs find d <C-R>=expand("<cword>")<CR><CR>
EOF
}
function append_all_conf() {
append_base_conf
append_vundle_conf
#append_molokai_conf
#append_tokyonight_conf
#append_solarized_conf
#append_tomorrow_conf
#append_zenburn_conf
append_seoul256_theme_conf
#append_default_theme_conf
append_nerdtree_conf
append_vim_arline_conf
append_indent_line_conf
append_ctags_conf
append_cscope_conf
}
function print_finish_tips() {
echo -e "\033[47;30m请运行vim,并执行PluginInstall \033[0m"
}
function work_func() {
init_env
backup_vimrc
delete_orig_vimrc
apt_install_plugin
git_install_plugin
#curl_install_plugin
append_all_conf
if [ $? -eq 0 ]; then
print_finish_tips
fi
}
function print_start_tips() {
echo -e "\033[2J" # 清屏
echo "使用本工具会重置vim原有配置"
read -p "确定使用本工具吗[Y/N] > " select
case $select in
"Y") echo -e "\033[47;30m你牛逼 \033[0m";
work_func;;
"N") echo -e "\033[47;30m你怂了 ByeBye\033[0m";
exit 1;;
*) echo -e "\033[47;30m没有这个选项啦 \033[0m";
read -p "输入任意键重新输入";
echo -e "\033[2J";
print_start_tips;;
esac
}
print_start_tips