-- Leader Map vim.g.mapleader = ' ' vim.g.maplocalleader = ' ' vim.keymap.set({ 'n', 'v' }, '', '', { silent = true }) local opts = { noremap = true, silent = true } -- Color Theme vim.keymap.set("n", "lm", ":colorscheme kanagawa-lotus", { desc = 'Switch to light mode' }) vim.keymap.set("n", "dm", ":colorscheme kanagawa-dragon", { desc = 'Switch to dark mode' }) -- Movement vim.keymap.set("n", "n", "nzzzv", { desc = "Next search result (centered)" }) vim.keymap.set("n", "N", "Nzzzv", { desc = "Previous search result (centered)" }) vim.keymap.set("n", "", "zz", { desc = "Half page down (centered)" }) vim.keymap.set("n", "", "zz", { desc = "Half page up (centered)" }) vim.keymap.set("n", "", ":m .+1==", { desc = "Move line down" }) vim.keymap.set("n", "", ":m .-2==", { desc = "Move line up" }) vim.keymap.set("v", "", ":m '>+1gv=gv", { desc = "Move selection down" }) vim.keymap.set("v", "", ":m '<-2gv=gv", { desc = "Move selection up" }) -- Split Navigation vim.keymap.set('n', 'vs', 'v', { desc = 'Split window vertically' }) vim.keymap.set('n', 'hs', 's', { desc = 'Split window horizontally' }) vim.keymap.set('n', 'es', '=', { desc = 'Equalize splits' }) vim.keymap.set('n', 'xs', ':close', { desc = 'Close split' }) 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) vim.keymap.set('n', '', ':resize -2', opts) vim.keymap.set('n', '', ':resize +2', opts) vim.keymap.set('n', '', ':vertical resize -2', opts) vim.keymap.set('n', '', ':vertical resize +2', opts) -- Buffer Navigation vim.keymap.set("n", "bn", ":bnext", { desc = "Next buffer" }) vim.keymap.set("n", "bp", ":bprevious", { desc = "Previous buffer" }) vim.keymap.set("n", "bd", ":bd", { desc = "Delete buffer" }) -- 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', 'q', vim.diagnostic.setloclist, { desc = 'Open diagnostics list' }) -- Convenience vim.keymap.set({ "n", "v" }, "d", '"_d', { desc = "Delete without yanking" }) vim.keymap.set("x", "p", [["_dP]], { desc = 'Paste previously yanked' }) vim.keymap.set('n', 'lw', 'set wrap!', opts) vim.keymap.set('v', '<', '', '>gv', opts) vim.keymap.set("n", "c", ":nohlsearch", { desc = "Clear search highlights" }) vim.keymap.set("n", "J", "mzJ`z", { desc = "Join lines and keep cursor position" }) vim.keymap.set("n", "rc", ":e $MYVIMRC", { desc = "Edit config" }) vim.keymap.set("n", "rl", ":so $MYVIMRC", { desc = "Reload config" })