vim.g.mapleader = " " local nv = {"n", "v"} local function definepairs(replacement, char) vim.keymap.set("o", "i" .. replacement, "i" .. char, {}) vim.keymap.set("o", "a" .. replacement, "a" .. char, {}) end definepairs("b", "(") definepairs("s", "\"") definepairs("q", "'") definepairs("t", "{") definepairs("r", "[") definepairs("a", "<") vim.keymap.set(nv, "gm", "gM", {}) vim.keymap.set(nv, "gM", "gMi", {}) -- Moving between windows vim.keymap.set(nv, "", "h", {}) vim.keymap.set(nv, "", "j", {}) vim.keymap.set(nv, "", "k", {}) vim.keymap.set(nv, "", "l", {}) -- Same, but for terminal vim.keymap.set("t", "", "h", {}) vim.keymap.set("t", "", "j", {}) vim.keymap.set("t", "", "k", {}) vim.keymap.set("t", "", "l", {}) -- Moving windows vim.keymap.set(nv, "h", "H", {}) vim.keymap.set(nv, "j", "J", {}) vim.keymap.set(nv, "k", "K", {}) vim.keymap.set(nv, "l", "L", {}) -- Resizing windows vim.keymap.set(nv, "", "-", {}) vim.keymap.set(nv, "", "+", {}) vim.keymap.set(nv, "", "<", {}) vim.keymap.set(nv, "", ">", {}) -- Make exiting insert mode in terminal mode easier vim.keymap.set("t", "", "", {}) -- Make it harder to accidentally undo vim.keymap.set(nv, "", "u", {}) vim.keymap.set(nv, "u", "", {}) -- Center when moving around at high speeds vim.keymap.set(nv, "", "zz", {}) vim.keymap.set(nv, "", "zz", {}) vim.keymap.set(nv, "G", "Gzz", {}) -- Delete line content. I didn't do ddO because that would extend comments if -- you were just above one. vim.keymap.set("n", "dc", "cc", {}) -- Make going to the end of a line as easy as going to the beginning vim.keymap.set({"n", "v", "o"}, "+", "$", {}) -- Allow yanking to system clipboard vim.keymap.set(nv, "", "\"+y", {}) vim.keymap.set(nv, "", "\"+p", {}) -- Commands vim.keymap.set(nv, "c", "set invhlsearch", {silent=true}) vim.keymap.set(nv, "e", "Oil", {silent=true}) vim.keymap.set(nv, "t", function() vim.cmd("split") vim.cmd("term") end, {silent=true}) -- Common typo with me vim.api.nvim_create_user_command("W", "w", {bang=true}) vim.api.nvim_create_user_command("Wa", "wa", {bang=true}) vim.api.nvim_create_user_command("Wq", "wq", {bang=true}) vim.api.nvim_create_user_command("Wqa", "wqa", {bang=true}) vim.api.nvim_create_user_command("Q", "q", {bang=true}) vim.api.nvim_create_user_command("Qa", "qa", {bang=true})