diff --git a/one-time-stuff/basic-settings.sh b/one-time-stuff/basic-settings.sh index 93dd331..5f2d149 100755 --- a/one-time-stuff/basic-settings.sh +++ b/one-time-stuff/basic-settings.sh @@ -411,7 +411,7 @@ esac # ---------------------------------------------------------- echo "----- Install vim configuration ---------------------" -read -p 'Setup vim, colors, defaults, etc? [y/N]: ' set_vim +read -p 'Setup vim, colors, plugins, defaults, etc? [y/N]: ' set_vim case $set_vim in [Yy]* ) echo 'Appending ~/.bashrc' @@ -432,12 +432,27 @@ VIM LOCATION=`dirname "$0"` cp "${LOCATION}/vim/colorful256.vim" "${HOME}/.vim/colors/colorful256.vim" - echo 'Installing vimrc' - if [ -f "${HOME}/.vimrc" ]; then - echo 'existing vimrc file detected, backing up' - mv "${HOME}/.vimrc" "${HOME}/.vimrc_`date +%s`" - fi + echo 'Installing plugin manager "vim-plug"' + mkdir -p "${HOME}/.vim/autoload" + if [[ -n $(command -v "jq") ]]; then + # prefer to download the latest release tag + version=$(curl --silent 'https://api.github.com/repos/junegunn/vim-plug/releases/latest' | jq -r '.tag_name') + fi + if [[ -z "$version" ]]; then + # but fallback to main branch + version="master" + fi + curl --output "$HOME/.vim/autoload/plug.vim" --silent "https://raw.githubusercontent.com/junegunn/vim-plug/$version/plug.vim" + + echo 'Installing vimrc' + if [ -f "${HOME}/.vimrc" ]; then + echo 'existing vimrc file detected, backing up' + mv "${HOME}/.vimrc" "${HOME}/.vimrc_`date +%s`" + fi cp "${LOCATION}/vim/vimrc" "${HOME}/.vimrc" + + echo 'Installing default plugins' + vim +'PluginInstall --sync' +quitall ;; * ) echo 'Skipping' diff --git a/one-time-stuff/vim/vimrc b/one-time-stuff/vim/vimrc index 16c7178..7116cf6 100644 --- a/one-time-stuff/vim/vimrc +++ b/one-time-stuff/vim/vimrc @@ -15,3 +15,45 @@ colorscheme colorful256 map OH map OF +call plug#begin() + +" highlight Caddyfile +Plug 'isobit/vim-caddyfile' + +" show current nesting (in large functions) +Plug 'wellle/context.vim' + +" improved file browser +Plug 'preservim/nerdtree' + +" git commands in vim +Plug 'tpope/vim-fugitive' + +" line group alignment +Plug 'junegunn/vim-easy-align' + +" git line status in number line +Plug 'airblade/vim-gitgutter' + +" better status bar +Plug 'vim-airline/vim-airline' +Plug 'vim-airline/vim-airline-themes' + +call plug#end() + +" config git-gutter +let g:gitgutter_terminal_reports_focus=0 +set updatetime=500 +set signcolumn=number +set number + +" style git-gutter +highlight LineNr cterm=reverse ctermfg=240 ctermbg=none gui=reverse guifg=#585858 guibg=#000000 +highlight SignColumn cterm=reverse ctermfg=255 ctermbg=none gui=reverse guifg=#eeeeee guibg=#000000 +highlight GitGutterAdd cterm=reverse ctermfg=2 ctermbg=none gui=reverse guifg=#008000 guibg=#000000 +highlight GitGutterChange cterm=reverse ctermfg=3 ctermbg=none gui=reverse guifg=#808000 guibg=#000000 +highlight GitGutterDelete cterm=reverse ctermfg=1 ctermbg=none gui=reverse guifg=#800000 guibg=#000000 + +" style vim-airline +let g:airline_theme='light' +