vim-which-key.vim 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. " set which key
  2. "
  3. " Any keymapping that involves <leader is here>
  4. nnoremap <silent> <leader> :WhichKey '<Space>'<CR>
  5. let g:which_key_sep = '→'
  6. " By default timeoutlen is 1000 ms
  7. set timeoutlen=100
  8. let g:mapleader = "\<Space>"
  9. let g:maplocalleader = ','
  10. let g:which_key_map = {}
  11. "let g:which_key_default_group_name = ''
  12. "let g:which_key_map.f = { 'name' : '+file' }
  13. "nnoremap <silent> <leader>fs :update<CR>
  14. "let g:which_key_map.f.s = ['update', 'save-file']
  15. " This is a funtion to open any file with <leader>(key sequence)
  16. fun! OpenConfigFile(file)
  17. if (&filetype ==? 'startify')
  18. execute 'e ' . a:file
  19. else
  20. execute 'tabe ' . a:file
  21. endif
  22. endfun
  23. nnoremap <silent> <leader>in :call OpenConfigFile('~/.config/nvim/init.vim')<cr>
  24. nnoremap <silent> <leader>bashrc :call OpenConfigFile('~/.bashrc')<cr>
  25. nnoremap <silent> <leader>code :call OpenConfigFile('~/Library/Application Support/Code/User/settings.json')<cr>
  26. let g:which_key_map['/'] = [ '<Plug>NERDCommenterToggle', 'commenter' ]
  27. let g:which_key_map['e'] = [ 'NERDTreeToggle', 'file-explorer' ]
  28. let g:which_key_map['p'] = [ 'pclose' , 'close-preview' ]
  29. let g:which_key_map['q'] = [ 'q' , 'quit' ]
  30. let g:which_key_map['d'] = [ 'bd' , 'delete-buffer' ]
  31. let g:which_key_map['s'] = [ 'w' , 'save' ]
  32. let g:which_key_map['r'] = [ 'Ranger' , 'ranger' ]
  33. let g:which_key_map['f'] = [ 'FZF' , 'fzf' ]
  34. let g:which_key_map['z'] = [ 'Goyo' , 'zen-mode' ]
  35. let g:which_key_map['v'] = ['<C-W>v' , 'split-window-right']
  36. let g:which_key_map['h'] = ['<C-W>s' , 'split-window-below']
  37. let g:which_key_map['o'] = ['only' , 'close-all-other-windows']
  38. let g:which_key_map.t = {
  39. \ 'name' : '+toggle' ,
  40. \ 'e' : ['NERDTreeToggle' , 'file-explorer'] ,
  41. \ 'b' : ['TagbarToggle' , 'tagbar'] ,
  42. \ 'n' : [':set nonumber!' , 'line-numbers'] ,
  43. \ 'r' : [':set norelativenumber!' , 'rel-line-numbers'] ,
  44. \ 's' : [':let @/ = ""' , 'remove-search-highlight'] ,
  45. \ 'c' : ['ColorToggle' , 'remove-color'] ,
  46. \ 't' : [':6sp term://zsh' , 'terminal'] ,
  47. \ }
  48. let g:which_key_map.h = {
  49. \ 'name' : '+highlights' ,
  50. \ 's' : ['nohlsearch' , 'remove-search-highlight'] ,
  51. \ 'c' : ['ColorToggle' , 'remove-color'] ,
  52. \ }
  53. "<Plug>(ale_hover)`
  54. "\ 'f' : ['LanguageClient#textDocument_formatting()' , 'formatting'] ,
  55. "\ 'h' : ['LanguageClient#textDocument_hover()' , 'hover'] ,
  56. let g:which_key_map.l = {
  57. \ 'name' : '+lsp' ,
  58. \ 'c' : ['LanguageClient_contextMenu()' , 'context_menu'] ,
  59. \ 'f' : ['ALEFix' , 'formatting'] ,
  60. \ 'i' : ['ALEInfo' , 'info'] ,
  61. \ 'h' : ['<Plug>(ale_hover)' , 'hover'] ,
  62. \ 'r' : ['LanguageClient#textDocument_references()' , 'references'] ,
  63. \ 'R' : ['LanguageClient#textDocument_rename()' , 'rename'] ,
  64. \ 's' : ['LanguageClient#textDocument_documentSymbol()' , 'document-symbol'] ,
  65. \ 'S' : ['LanguageClient#workspace_symbol()' , 'workspace-symbol'] ,
  66. \ 'g' : {
  67. \ 'name': '+goto',
  68. \ 'd' : ['LanguageClient#textDocument_definition()' , 'definition'] ,
  69. \ 't' : ['LanguageClient#textDocument_typeDefinition()' , 'type-definition'] ,
  70. \ 'i' : ['LanguageClient#textDocument_implementation()' , 'implementation'] ,
  71. \ },
  72. \ 'p' : {
  73. \ 'name': '+python',
  74. \ 'd' : ['<Plug>(pydocstring)' , 'python-docstring'] ,
  75. \ },
  76. \ }
  77. "let g:which_key_map.w = {
  78. "\ 'name' : '+windows' ,
  79. "\ 'v' : ['<C-W>v' , 'split-window-right'] ,
  80. "\ 'h' : ['<C-W>s' , 'split-window-below'] ,
  81. "\ 'w' : ['<C-W>w' , 'other-window'] ,
  82. "\ 'o' : ['only' , 'close-all-other-windows'] ,
  83. "\ 'd' : ['<C-W>c' , 'delete-window'] ,
  84. "\ '2' : ['<C-W>v' , 'layout-double-columns'] ,
  85. "\ '=' : ['<C-W>=' , 'balance-window'] ,
  86. "\ '?' : ['Windows' , 'fzf-window'] ,
  87. "\ }
  88. let g:which_key_map.b = {
  89. \ 'name' : '+buffer' ,
  90. \ '1' : ['b1' , 'buffer 1'] ,
  91. \ '2' : ['b2' , 'buffer 2'] ,
  92. \ 'd' : ['bd' , 'delete-buffer'] ,
  93. \ 'f' : ['bfirst' , 'first-buffer'] ,
  94. \ 'l' : ['blast' , 'last-buffer'] ,
  95. \ 'n' : ['bnext' , 'next-buffer'] ,
  96. \ 'p' : ['bprevious' , 'previous-buffer'] ,
  97. \ '?' : ['Buffers' , 'fzf-buffer'] ,
  98. \ 's' : ['Startify' , 'Startify'] ,
  99. \ 'g' : ['Goyo' , 'Goyo'] ,
  100. \ }
  101. call which_key#register('<Space>', "g:which_key_map")
  102. nnoremap <silent> <leader> :<c-u>WhichKey '<Space>'<CR>
  103. vnoremap <silent> <leader> :<c-u>WhichKeyVisual '<Space>'<CR>
  104. " Get rid of status bar when not in use
  105. autocmd! FileType which_key
  106. autocmd FileType which_key set laststatus=0 noshowmode noruler
  107. \| autocmd BufLeave <buffer> set laststatus=2 showmode ruler
  108. ""nnoremap <silent> <leader> :<c-u>WhichKey '<Space>'<CR>
  109. ""nnoremap <silent> <localleader> :<c-u>WhichKey ','<CR>
  110. let g:which_key_use_floating_win = 0