{...}: let no-leader = [ # Cursor movement { mode = "n"; key = "j"; action = "v:count == 0 ? 'gj' : 'j'"; options.desc = "Move Cursor Down"; options.expr = true; } { mode = "n"; key = ""; action = "v:count == 0 ? 'gj' : 'j'"; options.desc = "Move Cursor Down"; options.expr = true; } { mode = "n"; key = "k"; action = "v:count == 0 ? 'gk' : 'k'"; options.desc = "Move Cursor Up"; options.expr = true; } { mode = "n"; key = ""; action = "v:count == 0 ? 'gk' : 'k'"; options.desc = "Move Cursor Up"; options.expr = true; } # Window resize { mode = "n"; key = ""; action = "vertical resize -2"; options.desc = "Decrease Window Width"; } { mode = "n"; key = ""; action = "vertical resize +2"; options.desc = "Increase Window Width"; } { mode = "n"; key = ""; action = "resize -2"; options.desc = "Decrease Window Height"; } { mode = "n"; key = ""; action = "resize +2"; options.desc = "Increase Window Height"; } # Move lines { mode = "n"; key = ""; action = "m .+1=="; options.desc = "Move Line Down"; } { mode = "i"; key = ""; action = "m .+1==gi"; options.desc = "Move Line Down"; } { mode = "v"; key = ""; action = ":m '>+1gv=gv"; options.desc = "Move Line Down"; } { mode = "n"; key = ""; action = "m .-2=="; options.desc = "Move Line Up"; } { mode = "i"; key = ""; action = "m .-2==gi"; options.desc = "Move Line Up"; } { mode = "v"; key = ""; action = ":m '<-2gv=gv"; options.desc = "Move Line Up"; } # Save buffers { mode = ["n" "i" "v"]; key = ""; action = "w"; options.desc = "Save Buffer"; } { mode = ["n" "i" "v"]; key = ""; action = "wa"; options.desc = "Save All Buffers"; } # Indentation { mode = "v"; key = "<"; action = " multiline cursor? } { mode = "i"; key = ""; action = ""; options.desc = "Delete Previous Word"; # TODO: Breaks backspace multiline cursor? } # Clipboard { mode = "i"; key = ""; action = "\"+pi"; options.desc = "Paste"; } { mode = "i"; key = ""; action = "\"+pi"; options.desc = "Paste"; } { mode = "v"; key = ""; action = "\"+y"; options.desc = "Copy"; } # Flash/Search # { # mode = "n"; # key = "s"; # action = "lua require('flash').jump()"; # options.desc = "Flash jump"; # } # { # mode = "n"; # key = "S"; # action = "lua require('flash').treesitter()"; # options.desc = "Flash Treesitter"; # } # Various { mode = "n"; key = ""; action = "nohlsearch"; options.desc = "Clear Search Highlights"; } { mode = "n"; key = "K"; action = "lua vim.lsp.buf.hover()"; options.desc = "LSP Hover"; } { mode = "n"; key = "/"; action = "Telescope current_buffer_fuzzy_find"; options.desc = "Grep Buffer"; } # { # mode = "v"; # key = ";"; # action = ""; # options.desc = "Exit visual mode"; # } ]; leader = [ { mode = "n"; key = "L"; action = "Lazy"; options.desc = "Lazy"; } # Already have and # { # mode = "n"; # key = "s"; # action = "w"; # options.desc = "Save current buffer"; # } # { # mode = "n"; # key = "S"; # action = "wa"; # options.desc = "Save all buffers"; # } { mode = "n"; key = "R"; action = "edit!"; options.desc = "Reload Buffer"; } { mode = "n"; key = ""; action = "Telescope buffers"; options.desc = "List Buffers"; } { mode = "n"; key = "f"; action = "Telescope find_files"; options.desc = "Find File"; } # { # mode = "v"; # key = "n"; # action = ":NR!"; # options.desc = "Narrow region"; # } { mode = "n"; key = "N"; action = "Telescope notify"; options.desc = "Notication History"; } { mode = "n"; key = "r"; action = "Telescope resume"; options.desc = "Last Telescope Picker"; } { mode = "n"; key = ":"; action = "Telescope commands"; options.desc = "Find Command"; } # { # mode = "n"; # key = "M"; # action = "Telescope marks"; # options.desc = "Show marks"; # } # { # mode = "n"; # key = "J"; # action = "Telescope jumplist"; # options.desc = "Show jumplist"; # } { mode = "n"; key = "T"; action = "TodoTelescope"; options.desc = "List TODOs"; } { mode = "n"; key = "u"; action = "Telescope undo"; options.desc = "Undo History"; } { mode = "n"; key = "/"; action = "Telescope live_grep"; options.desc = "Grep Directory"; } ]; leader-help = [ { mode = "n"; key = "h"; action = "+help"; } { mode = "n"; key = "hv"; action = "Telescope vim_options"; options.desc = "Vim Options"; } { mode = "n"; key = "hk"; action = "Telescope keymaps"; options.desc = "Keymaps"; } { mode = "n"; key = "hm"; action = "Telescope man_pages"; options.desc = "Manpages"; } { mode = "n"; key = "hh"; action = "Telescope help_tags"; options.desc = "Vim Help"; } ]; leader-quit = [ { mode = "n"; key = "q"; action = "+quit"; } { mode = "n"; key = "qq"; action = "quitall"; options.desc = "Quit"; } { mode = "n"; key = "q!"; action = "quitall!"; options.desc = "Force Quit"; } ]; leader-session = [ { mode = "n"; key = "s"; action = "+session"; } { mode = "n"; key = "sl"; action = "Telescope persisted"; options.desc = "Restore"; } { mode = "n"; key = "ss"; action = "SessionSave"; options.desc = "Save"; } { mode = "n"; key = "sd"; action = "SessionDelete"; options.desc = "Delete"; } ]; leader-buffers = [ { mode = "n"; key = "b"; action = "+buffers"; } { mode = "n"; key = "bb"; action = "Telescope buffers sort_mru=true"; # There is also sort_lastused=true options.desc = "List Buffers"; } { mode = "n"; key = "bn"; action = "bnext"; options.desc = "Next Buffer"; } { mode = "n"; key = "bp"; action = "bprevious"; options.desc = "Previous Buffer"; } { mode = "n"; key = "bd"; action = "Bdelete"; options.desc = "Close Buffer"; } ]; leader-windows = [ { mode = "n"; key = "w"; action = "+windows"; } { mode = "n"; key = "wd"; action = "c"; options.desc = "Close Window"; } { mode = "n"; key = "ws"; action = "s"; options.desc = "Split Horizontally"; } { mode = "n"; key = "wv"; action = "v"; options.desc = "Split Vertically"; } { mode = "n"; key = "w="; action = "="; options.desc = "Balance Windows"; } { mode = "n"; key = "wh"; action = "h"; options.desc = "Goto Left Window"; } { mode = "n"; key = "wl"; action = "l"; options.desc = "Goto Wight Window"; } { mode = "n"; key = "wj"; action = "j"; options.desc = "Goto Bottom Window"; } { mode = "n"; key = "wk"; action = "k"; options.desc = "Goto Top Window"; } { mode = "n"; key = "ww"; action = "p"; options.desc = "Goto Other Window"; } { mode = "n"; key = "wm"; action = "WinShift"; options.desc = "Move Window"; } ]; leader-toggles = [ { mode = "n"; key = "t"; action = "+toggle"; } { mode = "n"; key = "tt"; action = "Neotree action=show toggle=true="; options.desc = "NeoTree"; } { mode = "n"; key = "to"; action = "Oil"; options.desc = "Oil"; } # { # mode = "n"; # key = "tt"; # action = "CHADopen --nofocus"; # options.desc = "Toggle CHADtree"; # } { mode = "n"; key = "tn"; action = "Navbuddy"; options.desc = "NavBuddy"; } { mode = "n"; key = "td"; action = "Trouble diagnostics toggle focus=false win.position=bottom"; options.desc = "Trouble Diagnostics"; } { mode = "n"; key = "tT"; action = "Trouble todo toggle focus=false win.position=right"; options.desc = "Trouble TODOs"; } { mode = "n"; key = "ts"; action = "Trouble symbols toggle focus=false win.position=right"; options.desc = "Trouble Symbols"; } { mode = "n"; key = "tf"; action = "ToggleAutoformat"; options.desc = "Format on Save"; } { mode = "n"; key = "tl"; action = "ToggleAutoLint"; options.desc = "Lint on Save"; } { mode = "n"; key = "tD"; action = "ToggleInlineDiagnostics"; options.desc = "Inline Diagnostics"; } { mode = "n"; key = "tw"; action = ":set wrap!"; options.desc = "Word Wrapping"; } { mode = "n"; key = "tv"; action = "VimtexTocToggle"; options.desc = "VimTex ToC"; } ]; leader-git = [ { mode = "n"; key = "g"; action = "+git"; } { mode = "n"; key = "gg"; action = "LazyGit"; options.desc = "LazyGit"; } { mode = "n"; key = "gm"; action = "GitMessenger"; options.desc = "GitMessenger"; } { mode = "n"; key = "gs"; action = "Telescope git_status"; options.desc = "Status"; } { mode = "n"; key = "gl"; action = "Telescope git_commits"; options.desc = "Log"; } { mode = "n"; key = "gb"; action = "Telescope git_branches"; options.desc = "Branches"; } { mode = "n"; key = "gf"; action = "Telescope git_bcommits"; options.desc = "File History"; } { mode = "n"; key = "gd"; action = "DiffviewOpen"; options.desc = "DiffView"; } ]; leader-code = [ { mode = "n"; key = "c"; action = "+code"; } { mode = "n"; key = "cf"; action = "lua require('conform').format()"; options.desc = "Format Buffer"; } { mode = "n"; key = "cd"; action = "lua vim.diagnostic.open_float()"; options.desc = "Line Diagnostics"; } { mode = "n"; key = "cD"; action = "Telescope diagnostics"; options.desc = "List Diagnostics"; } { mode = "n"; key = "cr"; action = "lua vim.lsp.buf.rename()"; options.desc = "Rename Symbol"; } { mode = "n"; key = "ca"; action = "lua vim.lsp.buf.code_action()"; options.desc = "Code Actions"; } # { # mode = "n"; # key = "cr"; # action = ":IncRename "; # options.desc = "Rename LSP symbol"; # } { mode = "n"; key = "cg"; action = "+goto"; } { mode = "n"; key = "cgh"; action = "ClangdSwitchSourceHeader"; options.desc = "Switch C/C++ Source/Header"; } { mode = "n"; key = "cgr"; action = "Telescope lsp_references"; options.desc = "Symbol References"; } { mode = "n"; key = "cgd"; action = "Telescope lsp_definitions"; options.desc = "Symbol Definition"; } { mode = "n"; key = "cgi"; action = "Telescope lsp_implementations"; options.desc = "Symbol Implementation"; } { mode = "n"; key = "cgt"; action = "Telescope lsp_type_definitions"; options.desc = "Type Definition"; } { mode = "n"; key = "cI"; action = "Telescope lsp_incoming_calls"; options.desc = "Incoming Calls"; } { mode = "n"; key = "cO"; action = "Telescope lsp_outgoing_calls"; options.desc = "Outgoing Calls"; } ]; in builtins.concatLists [ no-leader leader leader-help leader-quit leader-session leader-buffers leader-windows leader-toggles leader-git leader-code ]