init.vim 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  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 'itchyny/lightline.vim'
  8. Plug 'mhinz/vim-signify'
  9. Plug 'sjl/gundo.vim'
  10. Plug 'EinfachToll/DidYouMean'
  11. Plug 'idanarye/vim-merginal'
  12. Plug 'junegunn/fzf'
  13. Plug 'junegunn/fzf.vim'
  14. if filereadable(expand('~/.vim/local-plugins.vim'))
  15. source ~/.vim/local-plugins.vim
  16. endif
  17. Plug 'trusktr/seti.vim'
  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. " fix j/k with wraps
  72. nnoremap j gj
  73. nnoremap k gk
  74. vnoremap j gj
  75. vnoremap k gk
  76. " opening unite
  77. nnoremap <C-P> :GFiles<cr>
  78. nnoremap <C-O> :Buffers<cr>
  79. imap <C-W> <ESC><C-W>
  80. nnoremap <C-T>h :tabprev<cr>
  81. nnoremap <C-T>l :tabnext<cr>
  82. " grepper
  83. nnoremap <Leader>f :Rg
  84. " git
  85. nnoremap <Leader>gs :Gstatus<CR>
  86. nnoremap <Leader>gb :Merginal<CR>
  87. " undo tree
  88. nnoremap <Leader>ut :GundoToggle<CR>
  89. " vimrc
  90. nnoremap <Leader>ve :vsplit $MYVIMRC<CR>
  91. nnoremap <Leader>vs :source $MYVIMRC<CR>
  92. " ------ nvim specific ------
  93. if has('nvim')
  94. set inccommand=split
  95. tnoremap <C-[><C-[> <C-\><C-N>
  96. autocmd TermOpen term://* startinsert
  97. autocmd BufWinEnter,WinEnter term://* startinsert
  98. autocmd BufLeave term://* stopinsert
  99. autocmd FileType fzf tnoremap <buffer> jj <Esc>
  100. autocmd TermOpen * setlocal nonumber norelativenumber
  101. nnoremap <Leader>tv :vsp term://zsh<CR>
  102. nnoremap <Leader>to :term<CR>
  103. endif
  104. augroup formatting
  105. au!
  106. " strip trailing whitespace
  107. autocmd BufWritePre * :%s/\s\+$//e
  108. autocmd FileType markdown :set tw=80
  109. augroup end
  110. colorscheme seti
  111. if filereadable(expand('~/.vim/local-config.vim'))
  112. source ~/.vim/local-config.vim
  113. endif