-- 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 } -- This is for CodeCompanion Plugin. I will move this later vim.keymap.set('n', 'mt', ':CodeCompanionChat Toggle', opts) -- save file vim.keymap.set('n', '', ' w ', opts) -- save file without auto-formatting vim.keymap.set('n', 'sn', '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) -- Find and center vim.keymap.set('n', 'n', 'nzzzv', opts) vim.keymap.set('n', 'N', 'Nzzzv', 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) -- Buffers vim.keymap.set('n', '', ':bnext', opts) vim.keymap.set('n', '', ':bprevious', opts) vim.keymap.set('n', 'x', ':bdelete!', 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', 'q', vim.diagnostic.setloclist, { desc = 'Open diagnostics list' })