-- [[ 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 fixIdentation() 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 whitout 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", fixIdentation, default("Fix identation")) vim.keymap.set("n", "uh", ":nohl", default("Remove search highlight"))