-- [[ Basic Keymaps ]] function MAP(mode, l, r, desc) vim.keymap.set(mode, l, r, { desc = desc, silent = true }) end local function default(desc) return { silent = true, desc = desc, } end local function fixIndentation() local indent = 2 vim.opt.tabstop = indent vim.opt.shiftwidth = indent vim.opt.softtabstop = indent vim.cmd("retab") end -- Keymaps for better default experience -- See `:help vim.keymap.set()` vim.keymap.set({ "n", "v" }, "", "", { silent = true }) -- vim.keymap.set("n", "", "w", default("Keep cursor centered while junping")) -- Remap for dealing with word wrap vim.keymap.set("n", "k", "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true }) vim.keymap.set("n", "j", "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true }) vim.keymap.set("n", "J", "mzJ`z", default("Keep cursor in column while joining lines")) vim.keymap.set("n", "|", ":vs", default("Open vsplit")) vim.keymap.set("n", "°", ":sp", default("Open split")) vim.keymap.set("n", "", "zz", default("Keep cursor centered while junping")) vim.keymap.set("n", "", "zz", default("Keep cursor centered while junping")) vim.keymap.set("n", "n", "nzzzv", default("Keep cursor centered while searching")) vim.keymap.set("n", "N", "Nzzzv", default("Keep cursor centered while searching")) vim.keymap.set("n", "Q", "", {}) vim.keymap.set( "n", "rw", [[:%s/\<\>//gI]], default("Search and replace current word") ) -- vim.keymap.set("n", "rR", ":s/", default("Search and replace inline")) -- vim.keymap.set("n", "rr", ":%s/", default("Search and replace globally")) -- vim.keymap.set("v", "r", ":s/", default("Search and replace in selection")) vim.keymap.set("v", "p", [["_dP]], default("Paste without lossing yanked text")) vim.keymap.set("v", "J", ":m '>+1gv=gv", default("Move selection down")) vim.keymap.set("v", "K", ":m '<-2gv=gv", default("Move selection up")) vim.keymap.set("n", "uI", fixIndentation, default("Fix indentation")) vim.keymap.set("n", "uh", ":nohl", default("Remove search highlight"))