{...}: let # TODO: Doesn't work reliably. I think they are rebound by plugins after? Try setting in extraConfigLuaPost... disabled-mappings = let mkDisabledMapping = mapping: { mode = ["n" "v"]; key = mapping; action = ""; }; disableMappings = [ # I only use f/F with flash "s" "S" "t" "T" "H" "L" # Use flash to repeat f/F instead of ;/, # ;/, are now free for localleader and exiting visual mode like helix "," ";" # Use Telescope on "/", I don't want backwards search "?" ]; in builtins.map mkDisabledMapping disableMappings; 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; } { mode = "n"; key = "H"; action = "^"; options.desc = "Move Cursor to Line Start"; } { mode = "n"; key = "L"; action = "$"; options.desc = "Move Cursor to Line End"; } # 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 = " although i binding? } { mode = "i"; key = ""; action = ""; options.desc = "Delete Previous Word"; # TODO: Breaks backspace in although i binding? } # 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"; } { mode = "n"; key = ""; action = "YankyRingHistory"; options.desc = "Paste (Yanky)"; } { mode = "n"; key = ""; action = "YankyClearHistory"; options.desc = "Clear Yanky History"; } # 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 = "Telescope grep_string"; options.desc = "Find Selection"; } { mode = "n"; key = ";"; action = "%"; options.desc = "Matching ()[]<>"; } { mode = "v"; key = ";"; action = ""; options.desc = "Exit Visual Mode"; } ]; leader = [ { mode = "n"; key = "L"; action = "Lazy"; options.desc = "Lazy Packages"; } { mode = "n"; key = "n"; action = "lua Snacks.explorer.open({ enter = false, on_show = function() vim.cmd('wincmd =') end })"; options.desc = "Toggle Explorer"; } { mode = "n"; key = "N"; action = "Telescope notify"; options.desc = "Telescope Notify"; } { mode = "n"; key = "r"; action = "Telescope resume"; options.desc = "Last Telescope"; } # { # mode = "n"; # key = ";"; # action = "Telescope command_history"; # options.desc = "Last Commands"; # } { mode = "n"; key = ":"; action = "Telescope commands"; options.desc = "Telescope Command"; } { mode = "n"; key = "M"; action = "Telescope marks"; options.desc = "Telescope Marks"; } # { # mode = "n"; # key = "J"; # action = "Telescope jumplist"; # options.desc = "Telescope Jumps"; # } { mode = "n"; key = "d"; action = "TodoTelescope"; options.desc = "List TODOs"; } { mode = "n"; key = "D"; action = "Trouble todo toggle focus=false win.position=right"; options.desc = "Toggle TODOs"; } { mode = "n"; key = "/"; action = "Telescope live_grep"; options.desc = "Find in Project"; } { mode = "n"; key = "Q"; action = "Telescope quickfixhistory"; options.desc = "Quickfix History"; } # { # mode = "n"; # key = "Q"; # action = "cexpr []"; # options.desc = "Clear Quickfix List"; # } { mode = "n"; key = "W"; action = ":set wrap!"; options.desc = "Toggle Word Wrap"; } ]; leader-file = [ { mode = "n"; key = "f"; action = "+file"; } { mode = "n"; key = "ff"; action = "Telescope find_files"; options.desc = "Find File"; } { mode = "n"; key = "fl"; action = "Telescope oldfiles"; options.desc = "Last Files"; } { mode = "n"; key = "fo"; action = "ObsidianSearch"; options.desc = "Obsidian Note"; } { mode = "n"; key = "fr"; action = "edit!"; options.desc = "Reload File"; } { mode = "n"; key = "fu"; action = "Telescope undo"; options.desc = "Telescope Undo"; } { mode = "n"; key = "fN"; action = "enew"; options.desc = "New File"; } { mode = "n"; key = "fs"; action.__raw = '' function() local filename = vim.fn.input("Enter Filename: ") vim.cmd("write "..filename) end ''; options.desc = "Save File"; } ]; leader-help = [ { mode = "n"; key = "h"; action = "+help"; } { mode = "n"; key = "hv"; action = "Telescope vim_options"; options.desc = "Telescope Vimopts"; } { mode = "n"; key = "hk"; action = "Telescope keymaps"; options.desc = "Telescope Keys"; } { mode = "n"; key = "hm"; action = "Telescope man_pages"; options.desc = "Telescope Manpages"; } { mode = "n"; key = "hh"; action = "Telescope help_tags"; options.desc = "Telescope Helptags"; } ]; leader-quit = [ { mode = "n"; key = "q"; action = "+quit"; } { mode = "n"; key = "qq"; action = "quitall"; options.desc = "Quit"; } { mode = "n"; key = "qQ"; action = "quitall!"; options.desc = "Force Quit"; } ]; leader-session = [ { mode = "n"; key = "s"; action = "+session"; } { mode = "n"; key = "sl"; action = "Telescope persisted"; options.desc = "Restore Session"; } { mode = "n"; key = "ss"; action = "SessionSave"; options.desc = "Save Session"; } { mode = "n"; key = "sd"; action = "SessionDelete"; options.desc = "Delete Session"; } ]; leader-buffers = [ { mode = "n"; key = "b"; action = "+buffer"; } { mode = "n"; key = "bb"; action = "Telescope buffers"; options.desc = "List Buffers"; } { mode = "n"; key = ""; action = "Telescope buffers"; 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 = "bN"; action = "enew"; options.desc = "New Buffer"; } { mode = "n"; key = "bd"; action = "lua Snacks.bufdelete()"; options.desc = "Close Buffer"; } ]; leader-tabs = [ { mode = "n"; key = "t"; action = "+tab"; } { mode = "n"; key = "tt"; action = "Telescope telescope-tabs list_tabs"; options.desc = "List Tabpages"; } { mode = "n"; key = ""; action = "Telescope telescope-tabs list_tabs"; options.desc = "List Tabpages"; } { mode = "n"; key = "tn"; action = "tabnext"; options.desc = "Next Tabpage"; } { mode = "n"; key = "tp"; action = "tabprevious"; options.desc = "Previous Tabpage"; } { mode = "n"; key = "tN"; action = "tabnew"; options.desc = "New Tabpage"; } { mode = "n"; key = "td"; action = "tabclose"; options.desc = "Close Tabpage"; } ]; leader-windows = [ { mode = "n"; key = "w"; action = "+window"; } { 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 = "lua vim.api.nvim_set_current_win(require('window-picker').pick_window() or vim.api.nvim_get_current_win())"; options.desc = "Jump to Window"; } { mode = "n"; key = "wm"; action = "WinShift"; options.desc = "Move Window"; } ]; leader-git = [ { mode = "n"; key = "g"; action = "+git"; } { mode = "n"; key = "gg"; action = "lua Snacks.lazygit.open()"; options.desc = "LazyGit"; } { mode = "n"; key = "gm"; action = "lua Snacks.git.blame_line()"; options.desc = "Git Blame"; } { mode = "n"; key = "gs"; action = "Telescope git_status"; options.desc = "Git Status"; } { mode = "n"; key = "gl"; action = "Telescope git_commits"; options.desc = "Git Log"; } { mode = "n"; key = "gb"; action = "Telescope git_branches"; options.desc = "Git Branches"; } { mode = "n"; key = "gf"; action = "Telescope git_bcommits"; options.desc = "Git File History"; } { mode = "n"; key = "gd"; action = "DiffviewOpen"; options.desc = "Git 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 = "cI"; action = "Telescope lsp_incoming_calls"; options.desc = "LSP Incoming Calls"; } { mode = "n"; key = "cO"; action = "Telescope lsp_outgoing_calls"; options.desc = "LSP Outgoing Calls"; } { mode = "n"; key = "cC"; action = "Neogen"; options.desc = "Generate Doc Comment"; } # Toggles { mode = "n"; key = "ct"; action = "+toggle"; } { mode = "n"; key = "ctn"; action = "Navbuddy"; options.desc = "NavBuddy"; } { mode = "n"; key = "ctd"; action = "ToggleInlineDiagnostics"; options.desc = "Inline Diagnostics"; } { mode = "n"; key = "ctD"; action = "Trouble diagnostics toggle focus=false win.position=bottom"; options.desc = "Trouble Diagnostics"; } { mode = "n"; key = "cts"; action = "Trouble symbols toggle focus=false win.position=right"; options.desc = "Trouble Symbols"; } { mode = "n"; key = "ctf"; action = "ToggleAutoformat"; options.desc = "Format on Save"; } { mode = "n"; key = "ctl"; action = "ToggleAutoLint"; options.desc = "Lint on Save"; } # GoTo { 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 = "LSP References"; } { mode = "n"; key = "cgd"; action = "Telescope lsp_definitions"; options.desc = "LSP Definition"; } { mode = "n"; key = "cgi"; action = "Telescope lsp_implementations"; options.desc = "LSP Implementation"; } { mode = "n"; key = "cgt"; action = "Telescope lsp_type_definitions"; options.desc = "LSP Type Definition"; } { mode = "n"; key = "cge"; action = "lua vim.diagnostic.goto_next()"; options.desc = "Next Diagnostic"; } { mode = "n"; key = ""; action = "lua vim.diagnostic.goto_next()"; options.desc = "Next Diagnostic"; } { mode = "n"; key = "cgE"; action = "lua vim.diagnostic.goto_prev()"; options.desc = "Previous Diagnostic"; } { mode = "n"; key = ""; action = "lua vim.diagnostic.goto_prev()"; options.desc = "Previous Diagnostic"; } { mode = "n"; key = ""; action = "cnext"; options.desc = "Next Quickfix Item"; } { mode = "n"; key = "cgq"; action = "cnext"; options.desc = "Next Quickfix Item"; } { mode = "n"; key = ""; action = "cprevious"; options.desc = "Previous Quickfix Item"; } { mode = "n"; key = "cgQ"; action = "cprevious"; options.desc = "Previous Quickfix Item"; } ]; localleader-latex = [ ]; in builtins.concatLists [ disabled-mappings no-leader leader leader-file leader-help leader-quit leader-session leader-buffers leader-tabs leader-windows leader-git leader-code localleader-latex ]