{ globals.mapleader = " "; plugins.which-key = { enable = true; settings = { spec = [ # Settings groups { __unkeyed-1 = "g"; group = "Git"; } { __unkeyed-1 = ""; group = "Tabs"; } { __unkeyed-1 = "f"; group = "File / Find"; } { __unkeyed-1 = "q"; group = "Quit / Session"; } { __unkeyed-1 = "s"; group = "Search"; } { __unkeyed-1 = "b"; group = "Buffer"; } { __unkeyed-1 = "S"; group = "SOPS"; icon = ""; } { __unkeyed-1 = "O"; group = "Obsidian"; icon = "󰎚"; } { __unkeyed-1 = "d"; group = "Debug"; icon = ""; } { __unkeyed-1 = "c"; group = "Code Actions"; icon = ""; } { __unkeyed-1 = "d/"; group = "Search"; icon = ""; } { __unkeyed-1 = "D"; group = "Database"; icon = ""; } # Keys with custom icons / labels { __unkeyed-1 = "E"; icon = "󰏇"; desc = "Oil"; } { __unkeyed-1 = "e"; icon = "󰙅"; desc = "NeoTree"; } { __unkeyed-1 = "/"; icon = ""; desc = "Live Grep"; } { __unkeyed-1 = "da"; icon = ""; desc = "Run with Args"; } { __unkeyed-1 = "db"; icon = ""; desc = "Toggle Breakpoint"; } { __unkeyed-1 = "dB"; icon = ""; desc = "Breakpoint Condition"; } { __unkeyed-1 = "dc"; icon = ""; desc = "Continue"; } { __unkeyed-1 = "dC"; icon = ""; desc = "Run to cursor"; } { __unkeyed-1 = "de"; icon = "󰫧"; desc = "Eval"; } { __unkeyed-1 = "dg"; icon = ""; desc = "Go to line (no execute)"; } { __unkeyed-1 = "di"; icon = "󰆹"; desc = "Step into"; } { __unkeyed-1 = "dj"; icon = ""; desc = "Down"; } { __unkeyed-1 = "dk"; icon = ""; desc = "Up"; } { __unkeyed-1 = "dl"; icon = ""; desc = "Run Last"; } { __unkeyed-1 = "do"; icon = ""; desc = "Step Out"; } { __unkeyed-1 = "dO"; icon = ""; desc = "Step Over"; } { __unkeyed-1 = "dp"; icon = ""; desc = "Pause"; } { __unkeyed-1 = "dt"; icon = ""; desc = "Terminate"; } { __unkeyed-1 = "ca"; icon = "󱐋"; desc = "Code Actions"; } { __unkeyed-1 = "cr"; icon = "󰑕"; desc = "Rename"; } { __unkeyed-1 = "wa"; icon = "󱑾"; desc = "Add Workspace Folder"; } { __unkeyed-1 = "wr"; icon = ""; desc = "Remove Workspace Folder"; } { __unkeyed-1 = "wr"; icon = "󰉓"; desc = "List Workspace Folders"; } { __unkeyed-1 = "h"; icon = "󱡅"; desc = "Harpoon"; } { __unkeyed-1 = "n"; icon = ""; desc = "Bacon (Rust)"; } ]; }; }; keymaps = [ # Normal mode { mode = "i"; key = "jk"; action = "noh"; options.desc = "Normal mode and clear highlight"; } { mode = "i"; key = ""; action = "noh"; options.desc = "Normal mode and clear highlight"; } { mode = "n"; key = ""; action = "noh"; options.desc = "Normal mode and clear highlight"; } # Activate NeoTree { mode = "n"; key = "e"; action = "Neotree toggle"; options.desc = "NeoTree"; } # Activate Oil { mode = "n"; key = "E"; action = "Oil"; options.desc = "Oil"; } # Hop command { mode = "n"; key = "m"; action = "HopChar1"; options.desc = "Hop Char 1"; } # Add undo breakpoints { mode = "i"; key = ","; action = ",u"; options.desc = "Undo breakpoint"; } { mode = "i"; key = "."; action = ".u"; options.desc = "Undo breakpoint"; } { mode = "i"; key = ";"; action = ";u"; options.desc = "Undo breakpoint"; } # Harpoon commands { mode = "n"; key = "ha"; action = "lua require('harpoon.mark').add_file()"; options.desc = "Add File"; } { mode = "n"; key = "hn"; action = "lua require('harpoon.ui').nav_next()"; options.desc = "Next File"; } { mode = "n"; key = "hp"; action = "lua require('harpoon.ui').nav_prev()"; options.desc = "Previous File"; } { mode = "n"; key = "hm"; action = "Telescope harpoon marks"; options.desc = "Telescope Menu"; } { mode = "n"; key = "hq"; action = "lua require('harpoon.ui').toggle_quick_menu()"; options.desc = "Quick Menu"; } # Outline { mode = "n"; key = "o"; action = "Outline"; options.desc = "Outline"; } # FZF-Lua custom commands -- I want to limit to current directory { mode = "n"; key = "ff"; action = "lua require('fzf-lua').files({ cwd = vim.loop.cwd() })"; options.desc = "Find Files"; } { mode = "n"; key = "fr"; action = "lua require('fzf-lua').oldfiles({ cwd = vim.loop.cwd() })"; options.desc = "Recent Files"; } # Database { mode = "n"; key = "Du"; action = "DBUI"; options.desc = "Show Database UI"; } # LSP Actions { mode = "n"; key = "gd"; action = "FzfLua lsp_definitions jump_to_single_result=true ignore_current_line=true"; options.desc = "Goto Definition"; } { mode = "n"; key = "gr"; action = "FzfLua lsp_references jump_to_single_result=true ignore_current_line=true"; options.desc = "References"; } { mode = "n"; key = "gI"; action = "FzfLua lsp_implementations jump_to_single_result=true ignore_current_line=true"; options.desc = "Goto Implementation"; } { mode = "n"; key = "gy"; action = "FzfLua lsp_typedefs jump_to_single_result=true ignore_current_line=true"; options.desc = "Goto T[y]pe Definition"; } { mode = "n"; key = "cd"; action = "lua vim.diagnostic.open_float()"; options.desc = "Popup Diagnostics"; } { mode = "n"; key = "cD"; action = "Trouble diagnostics toggle"; options.desc = "List All Diagnostics"; } # SOPS { mode = "n"; key = "Sd"; action = "!sops -d -i %"; options.desc = "Decrypt SOPS File"; } { mode = "n"; key = "Se"; action = "!sops -e -i %"; options.desc = "Encrypt SOPS File"; } # Obsidian { mode = "n"; key = "On"; action = "ObsidianNew"; options.desc = "New Note"; } { mode = "n"; key = "Oo"; action = "ObsidianQuickSwitch"; options.desc = "Open Note"; } { mode = "n"; key = "Ol"; action = "ObsidianBacklinks"; options.desc = "Backlinks"; } { mode = "n"; key = "Ot"; action = "ObsidianTags"; options.desc = "Tags"; } { mode = "n"; key = "Ow"; action = "ObsidianWorkspace"; options.desc = "Change workspace"; } { mode = "n"; key = "Op"; action = "ObsidianPasteImg"; options.desc = "Paste image"; } { mode = "n"; key = "Oc"; action = "ObsidianToggleCheckbox"; options.desc = "Toggle checkbox"; } { mode = "n"; key = "Of"; action = "ObsidianSearch"; options.desc = "Find notes"; } # Git { mode = "n"; key = "gg"; action = "LazyGit"; options.desc = "LazyGit"; } # Windows { key = ""; action = "wincmd h"; options.desc = "Navigate Window Left"; } { key = ""; action = "wincmd j"; options.desc = "Navigate Window Down"; } { key = ""; action = "wincmd k"; options.desc = "Navigate Window Up"; } { key = ""; action = "wincmd l"; options.desc = "Navigate Window Right"; } { mode = "n"; key = "w"; action = ""; options.desc = "Windows"; } { mode = "n"; key = "-"; action = "s"; options.desc = "Split Window Below"; } { mode = "n"; key = "|"; action = "v"; options.desc = "Split Window Right"; } { mode = "n"; key = "wd"; action = "c"; options.desc = "Delete Window"; } # Tabs { mode = "n"; key = "l"; action = "tablast"; options.desc = "Last Tab"; } { mode = "n"; key = "o"; action = "tabonly"; options.desc = "Close Other Tabs"; } { mode = "n"; key = "f"; action = "tabfirst"; options.desc = "First Tab"; } { mode = "n"; key = ""; action = "tabnew"; options.desc = "New Tab"; } { mode = "n"; key = "]"; action = "tabnext"; options.desc = "Next Tab"; } { mode = "n"; key = "d"; action = "tabclose"; options.desc = "Close Tab"; } { mode = "n"; key = "["; action = "tabprevious"; options.desc = "Previous Tab"; } # Buffer { mode = "n"; key = ""; action = "bprevious"; options.desc = "Previous Buffer"; } { mode = "n"; key = ""; action = "bnext"; options.desc = "Next Buffer"; } { mode = "n"; key = "bb"; action = "e #"; options.desc = "Switch To Other Buffer"; } { mode = "n"; key = "bd"; action = "bd"; options.desc = "Delete Buffer and Window"; } { mode = "n"; key = "bp"; action = "BufferLineTogglePin"; options.desc = "Toggle Pin"; } { mode = "n"; key = "bP"; action = "BufferLineGroupClose ungrouped"; options.desc = "Delete Non-Pinned Buffers"; } { mode = "n"; key = "bo"; action = "BufferLineCloseOthers"; options.desc = "Delete Other Buffers"; } { mode = "n"; key = "br"; action = "BufferLineCloseRight"; options.desc = "Delete Buffers to the Right"; } { mode = "n"; key = "bl"; action = "BufferLineCloseLeft"; options.desc = "Delete Buffers to the Left"; } # DAP Telescope Actions { mode = "n"; key = "d/c"; action = "Telescope dap commands"; options.desc = "Search Commands"; } { mode = "n"; key = "d/b"; action = "Telescope dap list_breakpoints"; options.desc = "Search Breakpoints"; } { mode = "n"; key = "d/v"; action = "Telescope dap variables"; options.desc = "Search Variables"; } { mode = "n"; key = "d/f"; action = "Telescope dap frames"; options.desc = "Search Frames"; } # Bacon (Rust) { mode = "n"; key = "nl"; action = "BaconList"; options.desc = "List Bacon Issues"; } { mode = "n"; key = "nn"; action = "BaconLoad:w:BaconNext"; options.desc = "Next Bacon Issue"; } ]; }