" set which key " " Any keymapping that involves nnoremap :WhichKey '' let g:which_key_sep = '→' " By default timeoutlen is 1000 ms set timeoutlen=100 let g:mapleader = "\" let g:maplocalleader = ',' let g:which_key_map = {} "let g:which_key_default_group_name = '' "let g:which_key_map.f = { 'name' : '+file' } "nnoremap fs :update "let g:which_key_map.f.s = ['update', 'save-file'] " This is a funtion to open any file with (key sequence) fun! OpenConfigFile(file) if (&filetype ==? 'startify') execute 'e ' . a:file else execute 'tabe ' . a:file endif endfun nnoremap in :call OpenConfigFile('~/.config/nvim/init.vim') nnoremap bashrc :call OpenConfigFile('~/.bashrc') nnoremap code :call OpenConfigFile('~/Library/Application Support/Code/User/settings.json') let g:which_key_map['/'] = [ 'NERDCommenterToggle', 'commenter' ] let g:which_key_map['e'] = [ 'NERDTreeToggle', 'file-explorer' ] let g:which_key_map['p'] = [ 'pclose' , 'close-preview' ] let g:which_key_map['q'] = [ 'q' , 'quit' ] let g:which_key_map['d'] = [ 'bd' , 'delete-buffer' ] let g:which_key_map['s'] = [ 'w' , 'save' ] let g:which_key_map['r'] = [ 'Ranger' , 'ranger' ] let g:which_key_map['f'] = [ 'FZF' , 'fzf' ] let g:which_key_map['z'] = [ 'Goyo' , 'zen-mode' ] let g:which_key_map['v'] = ['v' , 'split-window-right'] let g:which_key_map['h'] = ['s' , 'split-window-below'] let g:which_key_map['o'] = ['only' , 'close-all-other-windows'] let g:which_key_map.t = { \ 'name' : '+toggle' , \ 'e' : ['NERDTreeToggle' , 'file-explorer'] , \ 'b' : ['TagbarToggle' , 'tagbar'] , \ 'n' : [':set nonumber!' , 'line-numbers'] , \ 'r' : [':set norelativenumber!' , 'rel-line-numbers'] , \ 's' : [':let @/ = ""' , 'remove-search-highlight'] , \ 'c' : ['ColorToggle' , 'remove-color'] , \ 't' : [':6sp term://zsh' , 'terminal'] , \ } let g:which_key_map.h = { \ 'name' : '+highlights' , \ 's' : ['nohlsearch' , 'remove-search-highlight'] , \ 'c' : ['ColorToggle' , 'remove-color'] , \ } "(ale_hover)` "\ 'f' : ['LanguageClient#textDocument_formatting()' , 'formatting'] , "\ 'h' : ['LanguageClient#textDocument_hover()' , 'hover'] , let g:which_key_map.l = { \ 'name' : '+lsp' , \ 'c' : ['LanguageClient_contextMenu()' , 'context_menu'] , \ 'f' : ['ALEFix' , 'formatting'] , \ 'i' : ['ALEInfo' , 'info'] , \ 'h' : ['(ale_hover)' , 'hover'] , \ 'r' : ['LanguageClient#textDocument_references()' , 'references'] , \ 'R' : ['LanguageClient#textDocument_rename()' , 'rename'] , \ 's' : ['LanguageClient#textDocument_documentSymbol()' , 'document-symbol'] , \ 'S' : ['LanguageClient#workspace_symbol()' , 'workspace-symbol'] , \ 'g' : { \ 'name': '+goto', \ 'd' : ['LanguageClient#textDocument_definition()' , 'definition'] , \ 't' : ['LanguageClient#textDocument_typeDefinition()' , 'type-definition'] , \ 'i' : ['LanguageClient#textDocument_implementation()' , 'implementation'] , \ }, \ 'p' : { \ 'name': '+python', \ 'd' : ['(pydocstring)' , 'python-docstring'] , \ }, \ } "let g:which_key_map.w = { "\ 'name' : '+windows' , "\ 'v' : ['v' , 'split-window-right'] , "\ 'h' : ['s' , 'split-window-below'] , "\ 'w' : ['w' , 'other-window'] , "\ 'o' : ['only' , 'close-all-other-windows'] , "\ 'd' : ['c' , 'delete-window'] , "\ '2' : ['v' , 'layout-double-columns'] , "\ '=' : ['=' , 'balance-window'] , "\ '?' : ['Windows' , 'fzf-window'] , "\ } let g:which_key_map.b = { \ 'name' : '+buffer' , \ '1' : ['b1' , 'buffer 1'] , \ '2' : ['b2' , 'buffer 2'] , \ 'd' : ['bd' , 'delete-buffer'] , \ 'f' : ['bfirst' , 'first-buffer'] , \ 'l' : ['blast' , 'last-buffer'] , \ 'n' : ['bnext' , 'next-buffer'] , \ 'p' : ['bprevious' , 'previous-buffer'] , \ '?' : ['Buffers' , 'fzf-buffer'] , \ 's' : ['Startify' , 'Startify'] , \ 'g' : ['Goyo' , 'Goyo'] , \ } call which_key#register('', "g:which_key_map") nnoremap :WhichKey '' vnoremap :WhichKeyVisual '' " Get rid of status bar when not in use autocmd! FileType which_key autocmd FileType which_key set laststatus=0 noshowmode noruler \| autocmd BufLeave set laststatus=2 showmode ruler ""nnoremap :WhichKey '' ""nnoremap :WhichKey ',' let g:which_key_use_floating_win = 0