-- Set leader key vim.g.mapleader = " " vim.g.maplocalleader = " " -- Disable the spacebar key's default behavior in Normal and Visual modes vim.keymap.set({ "n", "v" }, "", "", { silent = true }) -- For conciseness local opts = { noremap = true, silent = true } -- save file without auto-formatting vim.keymap.set("n", "", "noautocmd w ", opts) -- quit file vim.keymap.set("n", "", " q ", opts) -- delete single character without copying into register vim.keymap.set("n", "x", '"_x', opts) -- Vertical scroll and center vim.keymap.set("n", "", "zz", opts) vim.keymap.set("n", "", "zz", opts) vim.keymap.set("n", "", "zz", opts) -- Find and center vim.keymap.set("n", "n", "nzzzv", opts) vim.keymap.set("n", "N", "Nzzzv", opts) -- Resize with arrows vim.keymap.set("n", "k", ":resize -2", opts) vim.keymap.set("n", "j", ":resize +2", opts) vim.keymap.set("n", "h", ":vertical resize -2", opts) vim.keymap.set("n", "l", ":vertical resize +2", opts) -- Buffers vim.keymap.set("n", "", ":bnext", opts) vim.keymap.set("n", "", ":bprevious", opts) vim.keymap.set("n", "q", ":bdelete!:bnext", opts) -- close buffer vim.keymap.set("n", "b", " enew ", opts) -- new buffer -- Window management vim.keymap.set("n", "v", "v", opts) -- split window vertically vim.keymap.set("n", "h", "s", opts) -- split window horizontally vim.keymap.set("n", "se", "=", opts) -- make split windows equal width & height vim.keymap.set("n", "xs", ":close", opts) -- close current split window -- Navigate between splits vim.keymap.set("n", "", ":wincmd k", opts) vim.keymap.set("n", "", ":wincmd j", opts) vim.keymap.set("n", "", ":wincmd h", opts) vim.keymap.set("n", "", ":wincmd l", opts) -- Tabs vim.keymap.set("n", "to", ":tabnew", opts) -- open new tab vim.keymap.set("n", "tx", ":tabclose", opts) -- close current tab vim.keymap.set("n", "tn", ":tabn", opts) -- go to next tab vim.keymap.set("n", "tp", ":tabp", opts) -- go to previous tab -- Toggle line wrapping vim.keymap.set("n", "lw", "set wrap!", opts) -- Stay in indent mode vim.keymap.set("v", "<", "", ">gv", opts) -- Keep last yanked when pasting vim.keymap.set("v", "p", '"_dP', opts) -- Diagnostic keymaps vim.keymap.set("n", "[d", vim.diagnostic.goto_prev, { desc = "Go to previous diagnostic message" }) vim.keymap.set("n", "]d", vim.diagnostic.goto_next, { desc = "Go to next diagnostic message" }) vim.keymap.set("n", "d", vim.diagnostic.open_float, { desc = "Open floating diagnostic message" }) vim.keymap.set("n", "qd", vim.diagnostic.setloclist, { desc = "Open diagnostics list" }) -- Move lines vim.keymap.set("n", "", ":m -2", opts) vim.keymap.set("n", "", ":m +1", opts)