{ programs.nixvim = { plugins.which-key = { enable = true; settings = { delay = 600; icons = { breadcrumb = "»"; group = "+"; separator = ""; # ➜ mappings = false; }; spec = [ # General Mappings { __unkeyed-1 = "c"; mode = [ "n" "v" ]; group = "+code"; } { __unkeyed-1 = "d"; mode = [ "n" "v" ]; group = "+debug"; } { __unkeyed-1 = "s"; mode = "n"; group = "+search"; } { __unkeyed-1 = "m"; mode = "n"; group = "+markdown"; } { __unkeyed-1 = "t"; mode = "n"; group = "+trouble"; } { __unkeyed-1 = "u"; mode = "n"; group = "+ui"; } { __unkeyed-1 = "w"; mode = "n"; group = "+windows"; } { __unkeyed-1 = "h"; mode = "n"; group = "+harpoon"; } ]; win = { border = "rounded"; wo.winblend = 0; }; }; }; keymaps = [ # General Mappings { key = "j"; action = "gj"; } { key = "k"; action = "gk"; } { key = "e"; action = "Oil --float"; options.desc = "Oil"; } { key = "-"; action = "Oil"; options.desc = "Oil"; } { key = "E"; action = "Neotree toggle"; options.desc = "Neotree"; } { key = "s"; action = "lua require('flash').jump()"; options.desc = "Flash"; } { key = "K"; action = "lua vim.lsp.buf.hover()"; options.desc = "LSP Hover"; } { key = ""; action = "TmuxNavigateLeft"; } { key = ""; action = "TmuxNavigateDown"; } { key = ""; action = "TmuxNavigateUp"; } { key = ""; action = "TmuxNavigateRight"; } # UI { key = "uz"; action = "ZenMode"; options.desc = "Toggle ZenMode"; } { key = "uw"; action = "set wrap!"; options.desc = "Toggle word wrapping"; } { key = "ul"; action = "set linebreak!"; options.desc = "Toggle linebreak"; } { key = "us"; action = "set spell!"; options.desc = "Toggle spellcheck"; } { key = "uc"; action = "set cursorline!"; options.desc = "Toggle cursorline"; } { key = "un"; action = "set number!"; options.desc = "Toggle line numbers"; } { key = "ur"; action = "set relativenumber!"; options.desc = "Toggle relative line numbers"; } { key = "ut"; action = "set showtabline=2"; options.desc = "Show tabline"; } { key = "uT"; action = "set showtabline=0"; options.desc = "Hide tabline"; } # Search { key = " "; action = "lua require('telescope.builtin').find_files()"; options.desc = "Telescope"; } { key = "sg"; action = "lua require('telescope.builtin').live_grep()"; options.desc = "Livegrep"; } { key = "sf"; action = "lua require('telescope.builtin').find_files()"; options.desc = "Find Files"; } { key = "sb"; action = "lua require('telescope.builtin').buffers()"; options.desc = "Buffers"; } { key = "sh"; action = "lua require('telescope.builtin').help_tags()"; options.desc = "Help Tags"; } { key = "sc"; action = "lua require('telescope.builtin').commands()"; options.desc = "Commands"; } { key = "sm"; action = "lua require('telescope.builtin').marks()"; options.desc = "Marks"; } { key = "so"; action = "lua require('telescope.builtin').oldfiles()"; options.desc = "Oldfiles"; } { key = "ss"; action = "lua require('telescope.builtin').spell_suggest()"; options.desc = "Spell Suggest"; } { key = "sr"; action = ":noh"; options.desc = "Reset search"; } { key = "st"; action = "TodoTelescope"; options.desc = "Todos"; } # Trouble { key = "tx"; action = "Trouble diagnostics toggle"; options.desc = "Diagnostics (Trouble)"; } { key = "tX"; action = "Trouble diagnostics toggle filter.buf=0"; options.desc = "Buffer Diagnostics (Trouble)"; } { key = "ts"; action = "Trouble symbols toggle focus=false"; options.desc = "Symbols (Trouble)"; } { key = "tl"; action = "Trouble lsp toggle focus=false win.position=right"; options.desc = "LSP Definitions / references / ... (Trouble)"; } { key = "tL"; action = "Trouble loclist toggle"; options.desc = "Location List (Trouble)"; } { key = "tQ"; action = "Trouble qflist toggle"; options.desc = "Quickfix List (Trouble)"; } # Windows { key = "ws"; action = "split"; options.desc = "Split"; } { key = "wv"; action = "vsplit"; options.desc = "VSplit"; } { key = "wd"; action = "close"; options.desc = "Close"; } # Code { key = "cd"; action = "lua vim.lsp.buf.definition()"; options.desc = "LSP Definition"; } { key = "cr"; action = "lua vim.lsp.buf.references()"; options.desc = "LSP References"; } { key = "ct"; action = "lua vim.lsp.buf.type_definition()"; options.desc = "LSP Type Definition"; } { key = "ca"; action = "lua vim.lsp.buf.code_action()"; options.desc = "LSP Code Action"; } { key = "cf"; action = "lua vim.lsp.buf.formatting()"; options.desc = "LSP Formatting"; } { key = "cn"; action = "lua vim.lsp.diagnostic.goto_next()"; options.desc = "LSP Next Diagnostic"; } { key = "cp"; action = "lua vim.lsp.diagnostic.goto_prev()"; options.desc = "LSP Previous Diagnostic"; } { key = "cu"; action = "lua require('dapui').toggle()"; options.desc = "Toggle Dapui"; } { key = "cb"; action = "lua require('dap').toggle_breakpoint()"; options.desc = "Toggle breakpoint"; } ]; }; }