vimrc 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. " ------ settings ------
  2. " change terminal title
  3. set title
  4. " xdg-ish settings
  5. set undodir=~/.cache/vim/undo,.
  6. set backupdir=~/.cache/vim/backup,.
  7. set directory=~/.cache/vim/swap//,.
  8. " default indentation
  9. set shiftwidth=2
  10. set tabstop=4
  11. set expandtab
  12. " permanent undo history
  13. set undofile
  14. " allow switching buffers
  15. set hidden
  16. " always scroll
  17. set scrolloff=99
  18. " show line numbers
  19. set number
  20. set relativenumber
  21. " show gutter
  22. set signcolumn=yes
  23. " set wordwrap indent
  24. set nowrap
  25. set linebreak
  26. if exists("&breakindent")
  27. set breakindent
  28. set breakindentopt=shift:2,sbr
  29. endif
  30. " show whitespace
  31. set list
  32. " make a new copy of the file for backup
  33. " setting to no or auto messes with filewatchers
  34. set backupcopy=yes
  35. " disable modelines
  36. set nomodeline
  37. " ------ key bindings ------
  38. " ; as :
  39. nnoremap ; :
  40. vnoremap ; :
  41. " allow <ESC> via jj in insert mode
  42. inoremap jj <ESC>
  43. " tab switching
  44. nnoremap <C-T>h :tabprev<cr>
  45. nnoremap <C-T>l :tabnext<cr>
  46. " fix j/k with wraps
  47. nnoremap j gj
  48. nnoremap k gk
  49. vnoremap j gj
  50. vnoremap k gk
  51. " cursor display
  52. nnoremap <Leader>c :set cursorline! cursorcolumn!<CR>
  53. " fzf
  54. nnoremap <C-P> :GitFiles -o -c --exclude-standard<CR>
  55. nnoremap <C-O> :Buffers<CR>
  56. nnoremap <Leader>fs :DocumentSymbols<CR>
  57. nnoremap <Leader>ff :Rg<SPACE>
  58. " git
  59. nnoremap <Leader>gs :Git<CR>
  60. nnoremap <Leader>gb :Merginal<CR>
  61. " undo tree
  62. nnoremap <Leader>ut :UndotreeToggle<CR>
  63. " vimrc
  64. nnoremap <Leader>ve :vsplit $MYVIMRC<CR>
  65. nnoremap <Leader>vs :source $MYVIMRC<CR>
  66. " ------ nvim specific ------
  67. if has('nvim')
  68. set inccommand=split
  69. tnoremap <C-[><C-[> <C-\><C-N>
  70. autocmd TermOpen * setlocal scrollback=10000 nonumber norelativenumber
  71. autocmd TermOpen * startinsert
  72. autocmd FileType fzf tnoremap <buffer> jj <ESC>
  73. autocmd BufWinEnter,WinEnter term://* startinsert
  74. autocmd BufLeave term://* stopinsert
  75. " fix flickering when clearing terminal
  76. autocmd TermEnter * setlocal scrolloff=0
  77. autocmd TermLeave * setlocal scrolloff=99
  78. nnoremap <Leader>tv :vsp term://$SHELL<CR>
  79. nnoremap <Leader>to :term<CR>
  80. endif
  81. augroup formatting
  82. au!
  83. " strip trailing whitespace
  84. autocmd BufWritePre * :%s/\s\+$//e
  85. autocmd FileType markdown :set tw=80
  86. augroup end