{ programs.nixvim = { plugins.which-key = { enable = true; settings = { delay = 600; icons = { breadcrumb = "»"; group = "+"; separator = ""; # ➜ mappings = false; }; spec = [ # General Mappings { __unkeyed-1 = "u"; mode = "n"; group = "+ui"; } { __unkeyed-1 = "w"; mode = "n"; group = "+windows"; } { __unkeyed-1 = "c"; mode = "n"; group = "+code"; } ]; win = { border = "rounded"; wo.winblend = 0; }; }; }; keymaps = [ # General Mappings { key = "s"; action = "lua require('flash').jump()"; options.desc = "Flash"; } { key = "K"; action = "lua vim.lsp.buf.hover()"; options.desc = "LSP Hover"; } { key = ""; action = "bnext"; options.desc = "Next Buffer"; } # Tmux { key = ""; action = "TmuxNavigateLeft"; } { key = ""; action = "TmuxNavigateDown"; } { key = ""; action = "TmuxNavigateUp"; } { key = ""; action = "TmuxNavigateRight"; } # Disable Arrow Keys in Normal Mode { key = ""; action = ""; options.desc = "Disable Up Arrow"; } { key = ""; action = ""; options.desc = "Disable Down Arrow"; } { key = ""; action = ""; options.desc = "Disable Left Arrow"; } { key = ""; action = ""; options.desc = "Disable Right Arrow"; } # UI { 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 spellLazyGitcheck"; } { 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"; } # Windows { key = "ws"; action = "split"; options.desc = "Split"; } { key = "wv"; action = "vsplit"; options.desc = "VSplit"; } { key = "wd"; action = "close"; options.desc = "Close"; } ]; }; }