aboutsummaryrefslogtreecommitdiffstats
path: root/modules/home/conf/nvim/mappings
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-05-23 13:31:11 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-05-23 13:33:40 +0200
commitfd9b0ecef4142a62b45404700ba1cff488f84a73 (patch)
treeef6c1f74f05a2220a41ccff4b0890c39229f32f7 /modules/home/conf/nvim/mappings
parentrefactor(pkgs): Categorize into `by-name` shards (diff)
downloadnixos-config-fd9b0ecef4142a62b45404700ba1cff488f84a73.zip
refactor(modules/home): Setup as "normal" NixOS module
Diffstat (limited to 'modules/home/conf/nvim/mappings')
-rw-r--r--modules/home/conf/nvim/mappings/default.nix286
1 files changed, 286 insertions, 0 deletions
diff --git a/modules/home/conf/nvim/mappings/default.nix b/modules/home/conf/nvim/mappings/default.nix
new file mode 100644
index 00000000..2cb174a4
--- /dev/null
+++ b/modules/home/conf/nvim/mappings/default.nix
@@ -0,0 +1,286 @@
+{lib, ...}: {
+ programs.nixvim = {
+ globals = {
+ mapleader = " ";
+ maplocalleader = " ";
+ };
+ keymaps = [
+ {
+ mode = ["n" "i"];
+ key = "<Esc>";
+ action = "<cmd>noh<CR><Esc>";
+ options.desc = "Disable the search highlighting and send Escape";
+ }
+ {
+ key = "hh";
+ mode = ["i"];
+ action = ''
+ function()
+ local cmp = require('cmp');
+ local luasnip = require('luasnip');
+
+ if cmp.visible() then
+ cmp.select_next_item()
+ elseif luasnip.expand_or_locally_jumpable() then
+ luasnip.expand_or_jump()
+ end
+ end
+ '';
+ lua = true;
+ options.desc = "completion trigger/ forward in completen menu";
+ }
+ {
+ key = "uu";
+ mode = ["i"];
+ action = ''
+ function()
+ local cmp = require('cmp');
+ cmp.confirm()
+ end
+ '';
+ lua = true;
+ options.desc = "confirm the selected item";
+ }
+
+ # FIXME: Add the below keymappings, when alacritty gets support for the kitty
+ # keyboard protocol <2023-08-29>
+ {
+ # "<C-Tab>"
+ key = "ztn";
+ action = "<cmd>tabnext<CR>";
+ options.desc = "cycle to the next tab";
+ }
+ {
+ # "<S-C-Tab>"
+ key = "ztp";
+ action = "<cmd>tabprevious<CR>";
+ options.desc = "cycle to the previous tab";
+ }
+
+ # yank/ cut to the system clipboard
+ {
+ key = "<leader>y";
+ action = "\"+y";
+ options.desc = "yank to the system clipboard";
+ }
+ {
+ key = "<leader>Y";
+ action = "\"+Y";
+ options.desc = "yank until the end of the line to the system clipboard";
+ }
+
+ # Unmap some old keys
+ #{key = "s"; action = "'<Nop>'";}
+ #{key = "t"; action = "'<Nop>'";}
+ {
+ key = "<Up>";
+ action = "<Nop>";
+ }
+ {
+ key = "<Down>";
+ action = "<Nop>";
+ }
+ {
+ key = "<Left>";
+ action = "<Nop>";
+ }
+ {
+ key = "<Right>";
+ action = "<Nop>";
+ }
+
+ # Center the cursor vertically when moving to the next word during a search.
+ {
+ key = "l";
+ action = "nzzzv";
+ options.desc = "Center the cursor vertically when moving to the next word during a search.";
+ }
+ {
+ key = "L";
+ action = "Nzzzv";
+ options.desc = "Center the cursor vertically when moving to the next word during a search.";
+ }
+ # remap the other keys to dvorak
+ {
+ key = "k";
+ action = "t";
+ options.desc = "go the the right on char";
+ }
+ {
+ key = "K";
+ action = "T";
+ options.desc = "go to the left on char";
+ }
+ {
+ key = "j";
+ action = "k";
+ options.desc = "go to the right before the char";
+ }
+ {
+ key = "J";
+ action = "K";
+ options.desc = "go to the left before the char";
+ }
+
+ # Change Vim-keys
+ {
+ key = "h";
+ action = "<left>";
+ options.desc = "go left";
+ }
+ {
+ key = "t";
+ action = "g<down>";
+ options.desc = "go down, with displaylines";
+ }
+ {
+ key = "n";
+ action = "g<up>";
+ options.desc = "go up, with displaylines";
+ }
+ {
+ key = "s";
+ action = "<right>";
+ options.desc = "go right";
+ }
+
+ # Move display lines
+ {
+ key = "0";
+ action = "g0";
+ options.desc = "go to the leftmost character in the screen line";
+ }
+ {
+ key = "$";
+ action = "g$";
+ options.desc = "go to the rightmost character in the screen line";
+ }
+ {
+ mode = ["n"];
+ key = "<Enter>";
+ action = "gf";
+ options.desc = "open file/url under cursor";
+ }
+ {
+ mode = ["n"];
+ key = "<Tab>";
+ action = ":";
+ options.desc = "jump to command line";
+ }
+
+ {
+ mode = ["n"];
+ key = "\\f";
+ action = "function() require('lf').start() end";
+ lua = true;
+ options.desc = "open lf in a floating window";
+ }
+
+ # Splits
+ {
+ mode = ["n"];
+ key = "<C-t>";
+ action = "<C-w>p";
+ options.desc = "go to previous split";
+ }
+ {
+ mode = ["n"];
+ key = "<C-n>";
+ action = "<C-w>w";
+ options.desc = "go to next split";
+ }
+ {
+ mode = ["n"];
+ key = "<leader>-";
+ action = "<C-W>s";
+ options.desc = "New horizontal split";
+ }
+ {
+ mode = ["n"];
+ key = "<leader>|";
+ action = "<C-W>v";
+ options.desc = "New vertical split";
+ }
+
+ {
+ mode = ["n"];
+ key = "<leader>p";
+ action = "\"_dP";
+ options.desc = "keep the cut thing in the base register";
+ }
+ {
+ mode = ["n"];
+ key = "<leader>c";
+ action = "\"_c";
+ options.desc = "change without saving to register";
+ }
+
+ {
+ mode = ["n"];
+ key = "<leader>d";
+ action = "\"_d";
+ options.desc = "delete without saving to register";
+ }
+ {
+ key = "dd";
+ mode = ["n"];
+ action = ''
+ function()
+ if vim.api.nvim_get_current_line():match("^%s*$") then
+ return '"_dd'
+ else
+ return "dd"
+ end
+ end
+ '';
+ lua = true;
+ options = {
+ desc = "Pipe all blank line deletions to the blackhole register";
+ expr = true;
+ silent = true;
+ };
+ }
+
+ {
+ mode = ["n"];
+ key = "<leader>s";
+ action = ":%s/\\<<C-r><C-w>\\>/<C-r><C-w>/gI<Left><Left><Left>";
+ options.desc = "replace for the word under the cursor";
+ }
+
+ {
+ mode = ["n"];
+ key = "<C-s>";
+ action = "<cmd>mksession! <CR>";
+ options.desc = "overwrite/create a session";
+ }
+
+ {
+ mode = ["n"];
+ key = "<leader>X";
+ action = "!!$SHELL <CR>";
+ options.desc = "Read the current line and execute that line in your $SHELL. The resulting output will replace the curent line that was being executed.";
+ }
+ {
+ mode = ["t"];
+ key = "<Esc><Esc>";
+ action = "<C-\\><C-n>";
+ options.desc = "Exit terminal mode with <Esc><Esc>";
+ }
+
+ # move selected lines in visual mode
+ {
+ mode = ["v"];
+ key = "T";
+ action = ":m '>+1<CR>gv=gv";
+ options.desc = "move selected lines in visual mode down";
+ }
+ {
+ mode = ["v"];
+ key = "N";
+ action = ":m '<-2<CR>gv=gv";
+ options.desc = "move selected lines in visual mode up";
+ }
+ ];
+ };
+}