call plug#begin('~/.vim/plugged') Plug 'tpope/vim-sensible' Plug 'tpope/vim-sleuth' Plug 'tpope/vim-fugitive' Plug 'tpope/vim-surround' Plug 'bling/vim-airline' Plug 'mhinz/vim-signify' Plug 'sjl/gundo.vim' Plug 'Shougo/unite.vim' Plug 'Shougo/vimproc.vim', {'do' : 'make'} Plug 'EinfachToll/DidYouMean' Plug 'diepm/vim-rest-console' Plug 'idanarye/vim-merginal' Plug 'vimwiki/vimwiki' Plug 'vim-scripts/dbext.vim', {'for': 'sql'} Plug 'cespare/vim-toml' if executable('lein') Plug 'guns/vim-sexp' Plug 'tpope/vim-sexp-mappings-for-regular-people' Plug 'tpope/vim-fireplace', {'for': 'clojure'} endif if executable('sbt') Plug 'derekwyatt/vim-scala' endif if executable('kotlin') Plug 'udalov/kotlin-vim' endif if executable('ansible') Plug 'pearofducks/ansible-vim' endif if executable('rustc') Plug 'rust-lang/rust.vim' endif if executable('npm') Plug 'pangloss/vim-javascript' Plug 'mxw/vim-jsx' endif if executable('qml') Plug 'peterhoeg/vim-qml' endif Plug 'trusktr/seti.vim' call plug#end() " ----- plugin settings ------ let g:signify_vcs_list = [ 'git' ] let g:jsx_ext_required = 0 let g:unite_enable_auto_select = 0 let g:airline_left_sep='' let g:airline_right_sep='' let g:vimwiki_list = [{'path': '~/.root/home/wiki'}] " use rg or ag if present if executable('rg') let g:unite_source_rec_async_command = \ ['rg', '--follow', '--hidden', '--files'] let g:unite_source_grep_command = 'rg' let g:unite_source_grep_default_opts = '-i --vimgrep --hidden' let g:unite_source_grep_recursive_opt = '' elseif executable('ag') let g:unite_source_rec_async_command = \ ['ag', '--follow', '--nocolor', '--nogroup', \ '--hidden', '-g', ''] let g:unite_source_grep_command = 'ag' let g:unite_source_grep_default_opts = '-i --vimgrep --hidden' let g:unite_source_grep_recursive_opt = '' endif autocmd FileType unite call s:unite_settings() function! s:unite_settings() " Enable navigation with control-j and control-k in insert mode imap (unite_select_next_line) imap (unite_select_previous_line) inoremap unite#do_action('split') inoremap unite#do_action('vsplit') nnoremap s unite#do_action('split') nnoremap v unite#do_action('vsplit') endfunction call unite#custom#profile('default', 'context', { \ 'ignorecase': 1, \ 'prompt': '> ', \ 'direction': 'botright', \ }) " ------ settings ------ " change terminal title set title " xdg-ish settings set undodir=~/.cache/vim/undo,. set backupdir=~/.cache/vim/backup,. set directory=~/.cache/vim/swap//,. " default indentation set shiftwidth=2 set tabstop=4 set expandtab " permanent undo history set undofile " allow switching buffers set hidden " always scroll set scrolloff=99 " show line numbers set number set relativenumber " set wordwrap indent set nowrap set linebreak if exists("&breakindent") set breakindent set breakindentopt=shift:2,sbr endif " show whitespace set list " make a new copy of the file for backup " setting to no or auto messes with filewatchers set backupcopy=yes " ------ key bindings ------ " ; as : nnoremap ; : vnoremap ; : " allow via jj in insert mode inoremap jj " fix j/k with wraps nnoremap j gj nnoremap k gk vnoremap j gj vnoremap k gk " opening unite nnoremap :Unite -buffer-name=files -start-insert file_rec/async nnoremap :Unite -buffer-name=buffers -start-insert buffer imap nnoremap h :tabprev nnoremap l :tabnext " grepper nnoremap f :Unite grep:. " git nnoremap gs :Gstatus nnoremap gb :Merginal " undo tree nnoremap ut :GundoToggle " vimrc nnoremap ve :vsplit $MYVIMRC nnoremap vs :source $MYVIMRC " ------ nvim specific ------ if has('nvim') set inccommand=split let g:airline_theme_patch_func = 'AirlineThemePatch' function! AirlineThemePatch(palette) let a:palette.terminal = copy(a:palette.insert) endfunction let g:terminal_scrollback_buffer_size = 10000 tnoremap tmap tmap tmap tmap tnoremap tnoremap tnoremap "+pi autocmd BufWinEnter,WinEnter term://* startinsert nnoremap tv :vsp term://zsh nnoremap to :term endif augroup formatting au! " strip trailing whitespace autocmd BufWritePre * :%s/\s\+$//e augroup end colorscheme seti if filereadable(expand('~/.vimrc.local')) source ~/.vimrc.local endif