vim.g.mapleader = ' ' vim.g.maplocalleader = ' ' vim.keymap.set({ 'n', 'v' }, '', '', { silent = true }) local opts = { noremap = true, silent = true } -- delete single character without copying into register vim.keymap.set('n', 'x', '"_x', opts) vim.keymap.set('n', '', 'zz', opts) vim.keymap.set('n', '', 'zz', opts) -- Resize with arrows 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) -- Window management vim.keymap.set('n', 'sv', 'v', opts) -- split window vertically vim.keymap.set('n', 'sh', '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) -- 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', 'q', vim.diagnostic.setloclist, { desc = 'Open diagnostics list' })