# Thanks for the keybinds primeagen and folke! { lib, config, ... }: { options = { keys.enable = lib.mkEnableOption "Enable keys module"; }; config = lib.mkIf config.keys.enable { globals.mapleader = " "; keymaps = [ # Disable arrow keys # { # mode = [ # "n" # "i" # ]; # key = ""; # action = ""; # options = { # silent = true; # noremap = true; # desc = "Disable Up arrow key"; # }; # } # { # mode = [ # "n" # "i" # ]; # key = ""; # action = ""; # options = { # silent = true; # noremap = true; # desc = "Disable Down arrow key"; # }; # } # { # mode = [ # "n" # "i" # ]; # key = ""; # action = ""; # options = { # silent = true; # noremap = true; # desc = "Disable Right arrow key"; # }; # } # { # mode = [ # "n" # "i" # ]; # key = ""; # action = ""; # options = { # silent = true; # noremap = true; # desc = "Disable Left arrow key"; # }; # } { mode = ["n" "i"]; key = ""; action = "g"; } { mode = ["n" "i"]; key = ""; action = "g"; } # Tabs { mode = "n"; key = "l"; action = "tablast"; options = { silent = true; desc = "Last tab"; }; } { mode = "n"; key = "f"; action = "tabfirst"; options = { silent = true; desc = "First Tab"; }; } { mode = "n"; key = ""; action = "tabnew"; options = { silent = true; desc = "New Tab"; }; } { mode = "n"; key = "]"; action = "tabnext"; options = { silent = true; desc = "Next Tab"; }; } { mode = "n"; key = "d"; action = "tabclose"; options = { silent = true; desc = "Close tab"; }; } { mode = "n"; key = "["; action = "tabprevious"; options = { silent = true; desc = "Previous Tab"; }; } # Windows { mode = "n"; key = "ww"; action = "p"; options = { silent = true; desc = "Other window"; }; } { mode = "n"; key = "wd"; action = "c"; options = { silent = true; desc = "Delete window"; }; } { mode = "n"; key = "w-"; action = "s"; options = { silent = true; desc = "Split window below"; }; } { mode = "n"; key = "w|"; action = "v"; options = { silent = true; desc = "Split window right"; }; } # { # mode = "n"; # key = "-"; # action = "s"; # options = { # silent = true; # desc = "Split window below"; # }; # } # { # mode = "n"; # key = "|"; # action = "v"; # options = { # silent = true; # desc = "Split window right"; # }; # } { mode = "n"; key = ""; action = "w"; options = { silent = true; desc = "Save file"; }; } # Quit/Session { mode = "n"; key = "qq"; action = "quitall"; options = { silent = true; desc = "Quit all"; }; } { mode = "n"; key = "qs"; action = ":lua require('persistence').load()"; options = { silent = true; desc = "Restore session"; }; } { mode = "n"; key = "ql"; action = "lua require('persistence').load({ last = true })"; options = { silent = true; desc = "Restore last session"; }; } { mode = "n"; key = "qd"; action = "lua require('persistence').stop()"; options = { silent = true; desc = "Don't save current session"; }; } # Toggle { mode = "n"; key = "ul"; action = ":lua ToggleLineNumber()"; options = { silent = true; desc = "Toggle Line Numbers"; }; } { mode = "n"; key = "uL"; action = ":lua ToggleRelativeLineNumber()"; options = { silent = true; desc = "Toggle Relative Line Numbers"; }; } { mode = "n"; key = "uw"; action = ":lua ToggleWrap()"; options = { silent = true; desc = "Toggle Line Wrap"; }; } # Inlay Hints { mode = "n"; key = "uh"; action = ":lua ToggleInlayHints()"; options = { silent = true; desc = "Toggle Inlay Hints"; }; } { mode = "v"; key = "J"; action = ":m '>+1gv=gv"; options = { silent = true; desc = "Move up when line is highlighted"; }; } { mode = "v"; key = "K"; action = ":m '<-2gv=gv"; options = { silent = true; desc = "Move down when line is highlighted"; }; } { mode = "n"; key = "J"; action = "mzJ`z"; options = { silent = true; desc = "Allow cursor to stay in the same place after appeding to current line"; }; } { mode = "v"; key = "<"; action = " + y or just y to have it just in vim { mode = [ "n" "v" ]; key = "y"; action = "\"+y"; options = { desc = "Copy to system clipboard"; }; } { mode = [ "n" "v" ]; key = "Y"; action = "\"+Y"; options = { desc = "Copy to system clipboard"; }; } # Delete to void register { mode = [ "n" "v" ]; key = "D"; action = "\"_d"; options = { desc = "Delete to void register"; }; } # instead of pressing esc just because { mode = "i"; key = ""; action = ""; } { mode = "n"; key = ""; action = "zz"; } { mode = "n"; key = ""; action = "zz"; } { mode = "n"; key = "n"; action = "nzzzv"; } { mode = "n"; key = "N"; action = "Nzzzv"; } { mode = "n"; key = ""; action = "!tmux new tmux-sessionizer"; options = { desc = "Switch between projects"; }; } # Set highlight on search, but clear on pressing in normal mode { mode = "n"; key = ""; action = "nohlsearch"; } ]; }; }