call plug#begin('~/.vim/plugged') Plug 'tpope/vim-sensible' Plug 'tpope/vim-sleuth' Plug 'tpope/vim-fugitive' Plug 'tpope/vim-surround' Plug 'tpope/vim-abolish' Plug 'mhinz/vim-signify' Plug 'sjl/gundo.vim' Plug 'EinfachToll/DidYouMean' Plug 'idanarye/vim-merginal' Plug 'junegunn/fzf' Plug 'junegunn/fzf.vim' Plug 'itchyny/lightline.vim' Plug 'trusktr/seti.vim' if filereadable(expand('~/.vim/local-plugins.vim')) source ~/.vim/local-plugins.vim endif call plug#end() " ----- plugin settings ------ let g:signify_vcs_list = [ 'git' ] let g:lightline = { \ 'colorscheme': 'wombat', \ 'active': { \ 'left': [ [ 'mode', 'paste' ], \ [ 'gitbranch', 'readonly', 'filename', 'modified' ] ] \ }, \ 'component_function': { \ 'gitbranch': 'fugitive#head' \ }, \ } " ------ 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 " show gutter set signcolumn=yes " 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 " disable modelines set nomodeline " ------ key bindings ------ " ; as : nnoremap ; : vnoremap ; : " allow via jj in insert mode inoremap jj " tab switching nnoremap h :tabprev nnoremap l :tabnext " fix j/k with wraps nnoremap j gj nnoremap k gk vnoremap j gj vnoremap k gk " cursor display nnoremap c :set cursorline! cursorcolumn! " fzf nnoremap :GitFiles -o -c --exclude-standard nnoremap :Buffers if executable('rg') nnoremap f :Rg elseif executable('ag') nnoremap f :Ag endif " 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 tnoremap autocmd TermOpen * setlocal scrollback=10000 nonumber norelativenumber autocmd TermOpen * startinsert autocmd FileType fzf tnoremap jj autocmd BufWinEnter,WinEnter term://* startinsert autocmd BufLeave term://* stopinsert nnoremap tv :vsp term://$SHELL nnoremap to :term endif augroup formatting au! " strip trailing whitespace autocmd BufWritePre * :%s/\s\+$//e autocmd FileType markdown :set tw=80 augroup end colorscheme seti if filereadable(expand('~/.vim/local-config.vim')) source ~/.vim/local-config.vim endif