init.vim 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. call plug#begin('~/.vim/plugged')
  2. Plug 'tpope/vim-sensible'
  3. Plug 'tpope/vim-sleuth'
  4. Plug 'tpope/vim-fugitive'
  5. Plug 'tpope/vim-surround'
  6. Plug 'tpope/vim-abolish'
  7. Plug 'mhinz/vim-signify'
  8. Plug 'sjl/gundo.vim'
  9. Plug 'EinfachToll/DidYouMean'
  10. Plug 'idanarye/vim-merginal'
  11. Plug 'junegunn/fzf'
  12. Plug 'junegunn/fzf.vim'
  13. Plug 'itchyny/lightline.vim'
  14. Plug 'trusktr/seti.vim'
  15. if filereadable(expand('~/.vim/local-plugins.vim'))
  16. source ~/.vim/local-plugins.vim
  17. endif
  18. call plug#end()
  19. " ----- plugin settings ------
  20. let g:signify_vcs_list = [ 'git' ]
  21. let g:lightline = {
  22. \ 'colorscheme': 'wombat',
  23. \ 'active': {
  24. \ 'left': [ [ 'mode', 'paste' ],
  25. \ [ 'gitbranch', 'readonly', 'filename', 'modified' ] ]
  26. \ },
  27. \ 'component_function': {
  28. \ 'gitbranch': 'fugitive#head'
  29. \ },
  30. \ }
  31. " ------ settings ------
  32. " change terminal title
  33. set title
  34. " xdg-ish settings
  35. set undodir=~/.cache/vim/undo,.
  36. set backupdir=~/.cache/vim/backup,.
  37. set directory=~/.cache/vim/swap//,.
  38. " default indentation
  39. set shiftwidth=2
  40. set tabstop=4
  41. set expandtab
  42. " permanent undo history
  43. set undofile
  44. " allow switching buffers
  45. set hidden
  46. " always scroll
  47. set scrolloff=99
  48. " show line numbers
  49. set number
  50. set relativenumber
  51. " show gutter
  52. set signcolumn=yes
  53. " set wordwrap indent
  54. set nowrap
  55. set linebreak
  56. if exists("&breakindent")
  57. set breakindent
  58. set breakindentopt=shift:2,sbr
  59. endif
  60. " show whitespace
  61. set list
  62. " make a new copy of the file for backup
  63. " setting to no or auto messes with filewatchers
  64. set backupcopy=yes
  65. " ------ key bindings ------
  66. " ; as :
  67. nnoremap ; :
  68. vnoremap ; :
  69. " allow <ESC> via jj in insert mode
  70. inoremap jj <ESC>
  71. " tab switching
  72. nnoremap <C-T>h :tabprev<cr>
  73. nnoremap <C-T>l :tabnext<cr>
  74. " fix j/k with wraps
  75. nnoremap j gj
  76. nnoremap k gk
  77. vnoremap j gj
  78. vnoremap k gk
  79. " fzf
  80. nnoremap <C-P> :GitFiles -o -c --exclude-standard<CR>
  81. nnoremap <C-O> :Buffers<CR>
  82. if executable('rg')
  83. nnoremap <Leader>f :Rg<CR>
  84. elseif executable('ag')
  85. nnoremap <Leader>f :Ag<CR>
  86. endif
  87. " git
  88. nnoremap <Leader>gs :Gstatus<CR>
  89. nnoremap <Leader>gb :Merginal<CR>
  90. " undo tree
  91. nnoremap <Leader>ut :GundoToggle<CR>
  92. " vimrc
  93. nnoremap <Leader>ve :vsplit $MYVIMRC<CR>
  94. nnoremap <Leader>vs :source $MYVIMRC<CR>
  95. " ------ nvim specific ------
  96. if has('nvim')
  97. set inccommand=split
  98. tnoremap <M-j><M-j> <C-\><C-N>
  99. autocmd TermOpen * setlocal scrollback=10000 nonumber norelativenumber
  100. autocmd TermOpen * startinsert
  101. autocmd TermOpen *FZF* tnoremap <buffer> jj <ESC>
  102. autocmd BufWinEnter,WinEnter term://* startinsert
  103. autocmd BufLeave term://* stopinsert
  104. nnoremap <Leader>tv :vsp term://$SHELL<CR>
  105. nnoremap <Leader>to :term<CR>
  106. endif
  107. augroup formatting
  108. au!
  109. " strip trailing whitespace
  110. autocmd BufWritePre * :%s/\s\+$//e
  111. autocmd FileType markdown :set tw=80
  112. augroup end
  113. colorscheme seti
  114. if filereadable(expand('~/.vim/local-config.vim'))
  115. source ~/.vim/local-config.vim
  116. endif