bindings.vim 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. let mapleader = " "
  2. " move text buffer in visual mode
  3. vnoremap K :m '<-2<CR>gv=gv
  4. vnoremap J :m '>+1<CR>gv=gv
  5. " write and quit easier
  6. nnoremap <Leader>w :w<CR>
  7. nnoremap <Leader>z :wq<CR>
  8. nnoremap <Leader>q :qa<CR>
  9. nnoremap <Leader>e :q<CR>
  10. " windows commands
  11. nnoremap <leader>pv :wincmd v<bar> :Ex <bar> :vertical resize 30<CR>
  12. nnoremap <leader>ps :Rg<CR>
  13. nnoremap <silent> <leader>+ :vertical resize +5<CR>
  14. nnoremap <silent> <leader>- :vertical resize -5<CR>
  15. " general custom commands
  16. command D filetype detect
  17. " commands for opening and compiling various document types
  18. command S silent !vshow '%:p'
  19. command C !compile "%"
  20. " general compile button
  21. map <F3> :w<CR>:!compile "%"; pkill -HUP mupdf<CR>
  22. " bibtex extra compiler
  23. map <F2> :w<CR>:!latexmk -pdf "%"; pkill -HUP mupdf<CR>
  24. map <F4> :noh<CR>
  25. map <F5> :set spell!<CR>
  26. map <F6> :w<CR>:!glosscompile "%"; pkill -HUP mupdf<CR>
  27. " jumper
  28. vnoremap <Space><Space> <Esc>/<++><Enter>"_c4l
  29. map <Space><Space> <Esc>/<++><Enter>"_c4l
  30. "copy from / to clipboard
  31. vnoremap <leader>y "+y
  32. vnoremap <leader>Y "+Y
  33. nmap <leader>p "+p
  34. nmap <leader>P "+P
  35. " Use <c-space> to trigger completion.
  36. inoremap <silent><expr> <c-space> coc#refresh()
  37. " Use `[g` and `]g` to navigate diagnostics
  38. nmap <silent> [g <Plug>(coc-diagnostic-prev)
  39. nmap <silent> ]g <Plug>(coc-diagnostic-next)
  40. " Remap keys for gotos
  41. nmap <silent> gd <Plug>(coc-definition)
  42. nmap <silent> gy <Plug>(coc-type-definition)
  43. nmap <silent> gi <Plug>(coc-implementation)
  44. nmap <silent> gr <Plug>(coc-references)
  45. nmap <leader>rn <Plug>(coc-rename)
  46. vmap <leader>f <Plug>(coc-format-selected)
  47. " switch (back and forth) to (and from) the last opened file
  48. nmap <leader>b <c-^><cr>
  49. nmap <leader>f <Plug>(coc-format-selected)
  50. noremap <silent> <Leader>f :Fern . -drawer -reveal=% -toggle -width=35<CR><C-w>=
  51. function! FernInit() abort
  52. nmap <buffer><expr>
  53. \ <Plug>(fern-my-open-expand-collapse)
  54. \ fern#smart#leaf(
  55. \ "\<Plug>(fern-action-open:select)",
  56. \ "\<Plug>(fern-action-expand:stay)",
  57. \ "\<Plug>(fern-action-collapse)",
  58. \ )
  59. nmap <buffer> <CR> <Plug>(fern-my-open-expand-collapse)
  60. nmap <buffer> <2-LeftMouse> <Plug>(fern-my-open-expand-collapse)
  61. nmap <buffer> n <Plug>(fern-action-new-path)
  62. nmap <buffer> d <Plug>(fern-action-remove)
  63. nmap <buffer> m <Plug>(fern-action-move)
  64. nmap <buffer> M <Plug>(fern-action-rename)
  65. nmap <buffer> c <Plug>(fern-action-hidden:toggle)
  66. nmap <buffer> r <Plug>(fern-action-reload)
  67. nmap <buffer> g <Plug>(fern-action-mark:toggle)
  68. nmap <buffer> o <Plug>(fern-action-open)
  69. nmap <buffer> b <Plug>(fern-action-open:split)
  70. nmap <buffer> v <Plug>(fern-action-open:vsplit)
  71. nmap <buffer> h <Plug>(fern-action-collapse)
  72. nmap <buffer> l <Plug>(fern-action-expand:stay)
  73. nmap <silent> <buffer> p <Plug>(fern-action-preview:toggle)
  74. nmap <silent> <buffer> <C-p> <Plug>(fern-action-preview:auto:toggle)
  75. nmap <silent> <buffer> <C-d> <Plug>(fern-action-preview:scroll:down:half)
  76. nmap <silent> <buffer> <C-u> <Plug>(fern-action-preview:scroll:up:half)
  77. nmap <buffer><nowait> < <Plug>(fern-action-leave)
  78. nmap <buffer><nowait> > <Plug>(fern-action-enter)
  79. endfunction
  80. " use TAB to autocomplete w/ coc
  81. inoremap <silent><expr> <TAB>
  82. \ pumvisible() ? "\<C-n>" :
  83. \ <SID>check_back_space() ? "\<TAB>" :
  84. \ coc#refresh()
  85. inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>"
  86. function! s:check_back_space() abort
  87. let col = col('.') - 1
  88. return !col || getline('.')[col - 1] =~# '\s'
  89. endfunction
  90. " Use `:Format` to format current buffer
  91. command! -nargs=0 Format :call CocAction('format')
  92. " Go to tab by number
  93. noremap <leader>1 1gt
  94. noremap <leader>2 2gt
  95. noremap <leader>3 3gt
  96. noremap <leader>4 4gt
  97. noremap <leader>5 5gt
  98. noremap <leader>6 6gt
  99. noremap <leader>7 7gt
  100. noremap <leader>8 8gt
  101. noremap <leader>9 9gt
  102. noremap <leader>0 :tablast<cr>
  103. " Applying codeAction to the selected region.
  104. " Example: `<leader>aap` for current paragraph
  105. xmap <leader>a <Plug>(coc-codeaction-selected)
  106. nmap <leader>a <Plug>(coc-codeaction-selected)
  107. " Remap keys for applying codeAction to the current buffer.
  108. nmap <leader>ac <Plug>(coc-codeaction)
  109. " Apply AutoFix to problem on the current line.
  110. nmap <leader>qf <Plug>(coc-fix-current)
  111. " Run the Code Lens action on the current line.
  112. nmap <leader>cl <Plug>(coc-codelens-action)
  113. " auto center view when walking through searches
  114. nnoremap n nzzzv
  115. nnoremap N Nzzzv
  116. " toggle tag bar
  117. nmap <leader>g :TagbarToggle<CR>
  118. " please write
  119. cmap w!! w !doas tee %
  120. " navigate chunks of current buffer
  121. nmap [h <Plug>(coc-git-prevchunk)
  122. nmap ]h <Plug>(coc-git-nextchunk)
  123. " navigate conflicts of current buffer
  124. nmap [c <Plug>(coc-git-prevconflict)
  125. nmap ]c <Plug>(coc-git-nextconflict)
  126. function! WinMove(key)
  127. let t:curwin = winnr()
  128. exec "wincmd ".a:key
  129. if (t:curwin == winnr())
  130. if (match(a:key,'[jk]'))
  131. wincmd v
  132. else
  133. wincmd s
  134. endif
  135. exec "wincmd ".a:key
  136. endif
  137. endfunction
  138. " smart global buffor / window switching
  139. nnoremap <silent> <C-h> :call WinMove('h')<CR>
  140. nnoremap <silent> <C-j> :call WinMove('j')<CR>
  141. nnoremap <silent> <C-k> :call WinMove('k')<CR>
  142. nnoremap <silent> <C-l> :call WinMove('l')<CR>
  143. " source vim config
  144. nnoremap <Leader>sv :source $XDG_CONFIG_HOME/nvim/init.vim<CR>
  145. nnoremap <leader>l :Telescope live_grep<CR>
  146. nnoremap <leader>t :Telescope find_files<CR>
  147. " markdown preview mappings
  148. nmap <leader>mg <Plug>MarkdownPreview
  149. nmap <leader>ms <Plug>MarkdownPreviewStop
  150. nmap <leader>mt <Plug>MarkdownPreviewToggle
  151. " correct whitespace
  152. nnoremap <leader>cw :StripWhitespace<CR>
  153. " move to next / previous trailing whitespace
  154. nnoremap ]w :NextTrailingWhitespace<CR>
  155. nnoremap [w :PrevTrailingWhitespace<CR>
  156. " trigger snippet expand
  157. imap <C-l> <Plug>(coc-snippets-expand)
  158. " select text for visual placeholder of snippet
  159. vmap <C-j> <Plug>(coc-snippets-select)
  160. " jump to next placeholder
  161. let g:coc_snippet_next = '<c-n>'
  162. " jump to previous placeholder
  163. let g:coc_snippet_prev = '<c-b>'
  164. " for both expand and jump (make expand higher priority.)
  165. imap <C-j> <Plug>(coc-snippets-expand-jump)