" Leader Key Maps " Timeout let g:which_key_timeout = 100 let g:which_key_display_names = {'': '↵', '': '⇆', " ": 'SPC'} " Map leader to which_key nnoremap :silent :silent WhichKey '' vnoremap :silent :silent WhichKeyVisual '' let g:which_key_map = {} let g:which_key_sep = '→' " Not a fan of floating windows for this let g:which_key_use_floating_win = 0 let g:which_key_max_size = 0 " Hide status line autocmd! FileType which_key autocmd FileType which_key set laststatus=0 noshowmode noruler \| autocmd BufLeave set laststatus=2 noshowmode ruler let g:which_key_map['/'] = 'comment toggle' let g:which_key_map[';'] = [ ':Dashboard' , 'home screen' ] let g:which_key_map[','] = [ '(emmet-expand-abbr)' , 'expand tags' ] let g:which_key_map['"'] = [ 'PeekupOpen' , 'registers' ] let g:which_key_map['?'] = [ ':NvimTreeFindFile' , 'find current file' ] let g:which_key_map['e'] = [ ':NvimTreeToggle' , 'explorer' ] let g:which_key_map['f'] = [ ':Telescope find_files' , 'find files' ] let g:which_key_map['h'] = [ 's' , 'split below'] let g:which_key_map['M'] = [ ':MarkdownPreviewToggle' , 'markdown preview'] let g:which_key_map['h'] = [ ':let @/ = ""' , 'no highlight' ] let g:which_key_map['r'] = [ ':RnvimrToggle' , 'ranger' ] " TODO create entire treesitter section let g:which_key_map['T'] = [ ':TSHighlightCapturesUnderCursor' , 'treesitter highlight' ] let g:which_key_map['v'] = [ 'v' , 'split right'] " TODO play nice with status line let g:which_key_map['z'] = [ 'Goyo' , 'zen' ] " Group mappings " . is for emmet let g:which_key_map['.'] = { \ 'name' : '+emmet' , \ ',' : ['(emmet-expand-abbr)' , 'expand abbr'], \ ';' : ['(emmet-expand-word)' , 'expand word'], \ 'u' : ['(emmet-update-tag)' , 'update tag'], \ 'd' : ['(emmet-balance-tag-inward)' , 'balance tag in'], \ 'D' : ['(emmet-balance-tag-outward)' , 'balance tag out'], \ 'n' : ['(emmet-move-next)' , 'move next'], \ 'N' : ['(emmet-move-prev)' , 'move prev'], \ 'i' : ['(emmet-image-size)' , 'image size'], \ '/' : ['(emmet-toggle-comment)' , 'toggle comment'], \ 'j' : ['(emmet-split-join-tag)' , 'split join tag'], \ 'k' : ['(emmet-remove-tag)' , 'remove tag'], \ 'a' : ['(emmet-anchorize-url)' , 'anchorize url'], \ 'A' : ['(emmet-anchorize-summary)' , 'anchorize summary'], \ 'm' : ['(emmet-merge-lines)' , 'merge lines'], \ 'c' : ['(emmet-code-pretty)' , 'code pretty'], \ } " a is for actions let g:which_key_map.a = { \ 'name' : '+actions' , \ 'c' : [':ColorizerToggle' , 'colorizer'], \ 'h' : [':let @/ = ""' , 'remove search highlight'], \ 'i' : [':IndentBlanklineToggle' , 'toggle indent lines'], \ 'n' : [':set nonumber!' , 'line-numbers'], \ 's' : [':s/\%V\(.*\)\%V/"\1"/' , 'surround'], \ 'r' : [':set norelativenumber!' , 'relative line nums'], \ 'v' : [':Codi' , 'virtual repl on'], \ 'V' : [':Codi!' , 'virtual repl off'], \ } " \ 'l' : [':Bracey' , 'start live server'], " \ 'L' : [':BraceyStop' , 'stop live server'], " b is for buffer let g:which_key_map.b = { \ 'name' : '+buffer' , \ '>' : [':BufferMoveNext' , 'move next'], \ '<' : [':BufferMovePrevious' , 'move prev'], \ 'b' : [':BufferPick' , 'pick buffer'], \ 'd' : [':BufferClose' , 'delete-buffer'], \ 'n' : ['bnext' , 'next-buffer'], \ 'p' : ['bprevious' , 'previous-buffer'], \ '?' : ['Buffers' , 'fzf-buffer'], \ } " d is for debug let g:which_key_map.d = { \ 'name' : '+debug' , \ 'b' : ['DebugToggleBreakpoint ' , 'toggle breakpoint'], \ 'c' : ['DebugContinue' , 'continue'], \ 'i' : ['DebugStepInto' , 'step into'], \ 'o' : ['DebugStepOver' , 'step over'], \ 'r' : ['DebugToggleRepl' , 'toggle repl'], \ 's' : ['DebugStart' , 'start'], \ } " \ 'O' : ['DebugStepOut' , 'next-buffer'], " \ 'S' : ['DebugGetSession ' , 'fzf-buffer'], " F is for fold let g:which_key_map.F = { \ 'name': '+fold', \ 'O' : [':set foldlevel=20' , 'open all'], \ 'C' : [':set foldlevel=0' , 'close all'], \ 'c' : [':foldclose' , 'close'], \ 'o' : [':foldopen' , 'open'], \ '1' : [':set foldlevel=1' , 'level1'], \ '2' : [':set foldlevel=2' , 'level2'], \ '3' : [':set foldlevel=3' , 'level3'], \ '4' : [':set foldlevel=4' , 'level4'], \ '5' : [':set foldlevel=5' , 'level5'], \ '6' : [':set foldlevel=6' , 'level6'] \ } " m is for mark " I'd rather use regular marks but they never clear let g:which_key_map.m = { \ 'name': '+fold', \ 't' : [':BookmarkToggle' , 'toggle'], \ 'j' : [':BookmarkNext' , 'next mark'], \ 'k' : [':BookmarkPrev' , 'prev mark'] \ } " s is for search powered by telescope let g:which_key_map.s = { \ 'name' : '+search' , \ '.' : [':Telescope filetypes' , 'filetypes'], \ 'B' : [':Telescope git_branches' , 'git branches'], \ 'd' : [':Telescope lsp_document_diagnostics' , 'document_diagnostics'], \ 'D' : [':Telescope lsp_workspace_diagnostics' , 'workspace_diagnostics'], \ 'f' : [':Telescope find_files' , 'files'], \ 'h' : [':Telescope command_history' , 'history'], \ 'i' : [':Telescope media_files' , 'media files'], \ 'm' : [':Telescope marks' , 'marks'], \ 'M' : [':Telescope man_pages' , 'man_pages'], \ 'o' : [':Telescope vim_options' , 'vim_options'], \ 't' : [':Telescope live_grep' , 'text'], \ 'r' : [':Telescope registers' , 'registers'], \ 'w' : [':Telescope file_browser' , 'buf_fuz_find'], \ 'u' : [':Telescope colorscheme' , 'colorschemes'], \ } " S is for Session let g:which_key_map.S = { \ 'name' : '+Session' , \ 's' : [':SessionSave' , 'save session'], \ 'l' : [':SessionLoad' , 'load Session'], \ } " g is for git let g:which_key_map.g = { \ 'name' : '+git' , \ 'b' : [':GitBlameToggle' , 'blame'], \ 'B' : [':GBrowse' , 'browse'], \ 'd' : [':Git diff' , 'diff'], \ 'j' : [':NextHunk' , 'next hunk'], \ 'k' : [':PrevHunk' , 'prev hunk'], \ 'l' : [':Git log' , 'log'], \ 'p' : [':PreviewHunk' , 'preview hunk'], \ 'r' : [':ResetHunk' , 'reset hunk'], \ 'R' : [':ResetBuffer' , 'reset buffer'], \ 's' : [':StageHunk' , 'stage hunk'], \ 'S' : [':Gstatus' , 'status'], \ 'u' : [':UndoStageHunk' , 'undo stage hunk'], \ } " \ 'n' : [':Neogit' , 'neogit'], " G is for gist let g:which_key_map.G = { \ 'name' : '+gist' , \ 'b' : [':Gist -b' , 'post gist browser'], \ 'd' : [':Gist -d' , 'delete gist'], \ 'e' : [':Gist -e' , 'edit gist'], \ 'l' : [':Gist -l' , 'list public gists'], \ 's' : [':Gist -ls' , 'list starred gists'], \ 'm' : [':Gist -m' , 'post gist all buffers'], \ 'p' : [':Gist -P' , 'post public gist '], \ 'P' : [':Gist -p' , 'post private gist '], \ } " \ 'a' : [':Gist -a' , 'post gist anon'], " l is for language server protocol let g:which_key_map.l = { \ 'name' : '+lsp' , \ 'a' : [':Lspsaga code_action' , 'code action'], \ 'A' : [':Lspsaga range_code_action' , 'selected action'], \ 'd' : [':Telescope lsp_document_diagnostics' , 'document diagnostics'], \ 'D' : [':Telescope lsp_workspace_diagnostics', 'workspace diagnostics'], \ 'f' : [':LspFormatting' , 'format'], \ 'I' : [':LspInfo' , 'lsp info'], \ 'v' : [':LspVirtualTextToggle' , 'lsp toggle virtual text'], \ 'l' : [':Lspsaga lsp_finder' , 'lsp finder'], \ 'L' : [':Lspsaga show_line_diagnostics' , 'line_diagnostics'], \ 'p' : [':Lspsaga preview_definition' , 'preview definition'], \ 'q' : [':Telescope quickfix' , 'quickfix'], \ 'r' : [':Lspsaga rename' , 'rename'], \ 'T' : [':LspTypeDefinition' , 'type defintion'], \ 'x' : [':cclose' , 'close quickfix'], \ 's' : [':Telescope lsp_document_symbols' , 'document symbols'], \ 'S' : [':Telescope lsp_workspace_symbols' , 'workspace symbols'], \ } " \ 'H' : [':Lspsaga signature_help' , 'signature_help'], " \ 'o' : [':Vista!!' , 'outline'], " t is for terminal let g:which_key_map.t = { \ 'name' : '+terminal' , \ ';' : [':FloatermNew --wintype=normal --height=6' , 'terminal'], \ 'f' : [':FloatermNew fzf' , 'fzf'], \ 'g' : [':FloatermNew lazygit' , 'git'], \ 'd' : [':FloatermNew lazydocker' , 'docker'], \ 'n' : [':FloatermNew node' , 'node'], \ 'N' : [':FloatermNew nnn' , 'nnn'], \ 'p' : [':FloatermNew python' , 'python'], \ 'm' : [':FloatermNew lazynpm' , 'npm'], \ 't' : [':FloatermToggle' , 'toggle'], \ 'y' : [':FloatermNew ytop' , 'ytop'], \ 'u' : [':FloatermNew ncdu' , 'ncdu'], \ } " \ 'r' : [':FloatermNew ranger' , 'ranger'], " let g:which_key_map.R = { " \ 'name' : '+Find_Replace' , " \ 'f' : [':Farr --source=vimgrep' , 'file'], " \ 'p' : [':Farr --source=rgnvim' , 'project'], " \ } call which_key#register('', "g:which_key_map")