let normalVisual = builtins.map (x: { mode = [ "n" "v" ]; key = x.key; action = x.action; options.desc = x.desc; }) [ { key = "n"; action = "h"; desc = "left"; } { key = "e"; action = "j"; desc = "down"; } { key = "i"; action = "k"; desc = "up"; } { key = "o"; action = "l"; desc = "right"; } { key = "I"; action = "K"; desc = "docs"; } { key = "l"; action = "^"; desc = "start of line"; } { key = "L"; action = "$"; desc = "end of line"; } { key = "N"; action = "H"; desc = "first (n-th) line"; } { key = "O"; action = "L"; desc = "last (n-th) line"; } { key = "<leader>p"; action = "\"+p"; desc = "paste from clipboard"; } { key = "<leader>y"; action = "\"+y"; desc = "yank to clipboard"; } { key = "<leader>d"; action = "\"+d"; desc = "delete to clipboard"; } { key = "f"; action = "e"; desc = "forward to end of word"; } { key = "F"; action = "E"; desc = "forward to end of WORD"; } { key = "m"; action = "f"; desc = "move to next character"; } { key = "M"; action = "F"; desc = "move to previous character"; } { key = "E"; action = ""; desc = "disabled"; } ]; visual = builtins.map (x: { mode = [ "v" ]; key = x.key; action = x.action; options.desc = x.desc; }) [ { key = "h"; action = ""; desc = "disabled"; } { key = "j"; action = ""; desc = "disabled"; } { key = "k"; action = "i"; desc = "inside but k"; } ]; normal = builtins.map (x: { mode = [ "n" ]; key = x.key; action = x.action; options.desc = x.desc; }) [ { key = "<ESC>"; action = "<cmd> noh <CR>"; desc = "clear search highlight"; } { key = "j"; action = "n"; desc = "next word search"; } { key = "J"; action = "N"; desc = "prev word search"; } { key = "k"; action = "i"; desc = "insert mode"; } { key = "h"; action = "o"; desc = "line before + insert"; } { key = "H"; action = "O"; desc = "line after + insert"; } { key = "<leader>h"; action = "<cmd> Alpha <CR>"; desc = "toggle case"; } { key = "<leader>qq"; action = "<cmd> qa <CR>"; desc = "quit all"; } { key = "<leader>q!"; action = "<cmd> q! <CR>"; desc = "quit without saving"; } { key = "<leader>wq"; action = "<cmd> wq <CR>"; desc = "write and quit"; } { key = "gch"; action = "gco"; desc = "Comment.nvim"; } { key = "gcH"; action = "gcO"; desc = "Comment.nvim"; } { key = "gcn"; action = "gch"; desc = "Comment.nvim"; } { key = "gcN"; action = "gcH"; desc = "Comment.nvim"; } { key = "gce"; action = "gcj"; desc = "Comment.nvim"; } { key = "gci"; action = "gck"; desc = "Comment.nvim"; } { key = "<C-w>n"; action = "<C-w>h"; desc = "move to left window"; } { key = "<C-w>e"; action = "<C-w>j"; desc = "move to down window"; } { key = "<C-w>i"; action = "<C-w>k"; desc = "move to up window"; } { key = "<C-w>o"; action = "<C-w>l"; desc = "move to right window"; } { key = "<C-w>w"; action = "<C-w>n"; desc = "move to next window"; } ]; in normalVisual ++ visual ++ normal