-- Keymaps are automatically loaded on the VeryLazy event -- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua -- Add any additional keymaps here vim.g.mapleader = " " -- ================= GENERAL KEYBINDS ================= -- SAVE/QUIT {{{ vim.keymap.set("n", "Q", "q", { desc = "Q to quit" }) vim.keymap.set("n", "", "w", { desc = "S to write file" }) --}}} -- NVIM CONFIG SHORTCUTS {{{ -- stylua: ignore vim.keymap.set("n", "rc", "e $HOME/.config/nvim/lua/config/options.lua", { desc = "Open nvim options.lua" }) vim.keymap.set("n", "rp", "e $HOME/.config/nvim/lua/plugins/.", { desc = "lazy plugins dir" }) --}}} -- UNDO vim.keymap.set({ "n", "v" }, "l", "u", { desc = "Undo" }) -- INSERT vim.keymap.set({ "n", "v" }, "l", "i", { desc = "Insert" }) vim.keymap.set({ "n", "v" }, "L", "I", { desc = "Insert at line start" }) -- YANK TO SYSTEM CLIPBOARD vim.keymap.set("v", "Y", '"+y', { desc = "Copy to (System) Clipboard" }) -- SEARCH {{{ vim.keymap.set("n", "", "nohlsearch", { desc = "clear search highlight" }) --}}} -- SPACE TO TAB{{{ vim.keymap.set("n", "tt", "%s/ /\t/g", { desc = "space to tab" }) vim.keymap.set("v", "tt", "s/ /\t/g", { desc = "space to tab" }) --}}} -- MISC {{{ vim.keymap.set("n", "o", "za", { desc = "folding" }) vim.keymap.set("i", "", "A {}iko", { desc = "insert a pair of {} and goto next line" }) --}}} -- ================= CURSOR MOVEMENT ===================== {{{ -- NEW CURSOR MOVEMENT (ARROW KEY RESIZE WINDOWS) -- ^ -- e -- < h i > -- n -- v -- vim.keymap.set({ "n", "v", "", "s", "x" }, "e", "k", { desc = "move cursor ⇧" }) vim.keymap.set({ "n", "v", "", "s", "x" }, "n", "j", { desc = "move cursor ⇩" }) vim.keymap.set({ "n", "v", "", "s", "x" }, "h", "h", { desc = "move cursor ⇦" }) vim.keymap.set({ "n", "v", "", "s", "x" }, "i", "l", { desc = "move cursor ⇨" }) vim.keymap.set({ "n", "v" }, "E", "5k", { desc = "Move 5up K -> U" }) vim.keymap.set({ "n", "v" }, "N", "5j", { desc = "Move 5down J -> E" }) vim.keymap.set({ "n", "v" }, "H", "0", { desc = "Move start of line" }) vim.keymap.set({ "n", "v" }, "I", "$", { desc = "Move end of line" }) vim.keymap.set("n", "gu", "gk", { desc = "move up gk -> gu" }) vim.keymap.set("n", "ge", "gj", { desc = "move down gj -> ge" }) vim.keymap.set("n", "\v", "v$h", { desc = "???" }) -- FASTER IN-LINE NAVIGATION -- SET h (SAME AS n, CURSOR LEFT) TO 'END OF WORD' vim.keymap.set("n", "j", "e", { desc = "Move cursor to end of word" }) -- CTRL + U OR E WILL MOVE UP/DOWN THE VIEW PORT WITHOUT MOVING THE CURSOR vim.keymap.set({ "n", "v" }, "", "5", { desc = "Move viewport ⇧" }) vim.keymap.set({ "n", "v" }, "", "5", { desc = "Move viewport ⇩" }) -- INSERT MODE CURSOR MOVEMENT vim.keymap.set("i", "", "A") -- COMMAND MODE CURSOR MOVEMENT vim.keymap.set("c", "", "") vim.keymap.set("c", "", "") vim.keymap.set("c", "", "") vim.keymap.set("c", "", "") vim.keymap.set("c", "", "") vim.keymap.set("c", "", "") vim.keymap.set("c", "", "") vim.keymap.set("c", "", "") --}}} -- ================= SPLIT MANAGMENT ===================== {{{ vim.keymap.set("n", "E", "set nosplitbelowsplitset splitbelow", { desc = "Split ⇧" }) vim.keymap.set("n", "N", "set splitbelowsplit", { desc = "Split ⇩" }) vim.keymap.set("n", "H", "set nosplitrightvsplitset splitright", { desc = "Split ⇦" }) vim.keymap.set("n", "I", "set splitrightvsplit", { desc = "Split ⇨" }) vim.keymap.set({ "n", "t" }, "e", "k", { desc = "Move cursor to split ⇧" }) vim.keymap.set({ "n", "t" }, "n", "j", { desc = "Move cursor to split ⇩" }) vim.keymap.set({ "n", "t" }, "h", "h", { desc = "Move cursor to split ⇦" }) vim.keymap.set({ "n", "t" }, "i", "l", { desc = "Move cursor to split ⇨" }) vim.keymap.set({ "n", "t" }, "", "", { desc = "Move cursor to split ⇧" }) vim.keymap.set({ "n", "t" }, "", "", { desc = "Move cursor to split ⇩" }) vim.keymap.set({ "n", "t" }, "", "", { desc = "Move cursor to split ⇦" }) vim.keymap.set({ "n", "t" }, "", "", { desc = "Move cursor to split ⇨" }) vim.keymap.set("n", "", "res -5", { desc = "Resize split 0,-5" }) vim.keymap.set("n", "", "res +5", { desc = "Resize split 0,+5" }) vim.keymap.set("n", "", "vertical resize +5", { desc = "Resize split +5,0" }) vim.keymap.set("n", "", "vertical resize -5", { desc = "Resize split -5,0" }) vim.keymap.set("n", "H", "tK", { desc = "Make splits [H]orizontal" }) vim.keymap.set("n", "V", "tH", { desc = "Make splits [V]ertical" }) vim.keymap.set("n", "ri", "bK", { desc = "Rotate splits 90" }) vim.keymap.set("n", "rh", "bH", { desc = "Rotate splits -90" }) vim.keymap.set("n", "q", "jq", { desc = "Close Split ⇩ (Below)" }) --}}} -- TAB MANAGEMENT {{{ vim.keymap.set("n", "", "tabe", { desc = "New [Tab]" }) vim.keymap.set("n", "h", "-tabnext", { desc = "Select Tab ⇦" }) vim.keymap.set("n", "i", "+tabnext", { desc = "Select Tab ⇨" }) vim.keymap.set("n", "H", "-tabmove", { desc = "Tab move ⇦" }) vim.keymap.set("n", "I", "+tabmove", { desc = "Tab move ⇨" }) -- NOTE: Doesn't seem to work: -- vim.keymap.set("n", "c", "tab split", { desc = "New Tab from [C]urrent" }) -- vim.keymap.set('n', 'dw', '/\(\<\w\+\>\)\_s*\1', {desc='adjacent duplicate words'}) --vim.keymap.del("n", "j") --vim.keymap.del("n", "k") --vim.keymap.del("n", "l") -- }}} -- =================== TERM BEHAVIORS ==================== vim.keymap.set("t", "", "", { desc = "escape terminal, allowing excmds" }) vim.keymap.set("t", "", "", { desc = "close terminal" }) --vim: set fdm=marker fdl=0 -- buffers vim.keymap.set("n", "", "bprevious", { desc = "Prev Buffer" }) vim.keymap.set("n", "", "bnext", { desc = "Next Buffer" })