local opts = { noremap = true, silent = true } -- Increment / Decrement vim.keymap.set('n', '+', '') vim.keymap.set('n', '-', '') -- Select all vim.keymap.set('n', '', 'ggG') -- Replace currently selected text with default register without yanking it vim.keymap.set('x', 'p', '"_dP') -- Delete without yanking vim.keymap.set('n', 'd', '"_d') vim.keymap.set('v', 'd', '"_d') -- Clear highlights on search when pressing in normal mode vim.keymap.set('n', '', 'nohlsearch') -- Resize window using arrow keys vim.keymap.set('n', '', 'resize +2', { desc = 'Increase Window Height' }) vim.keymap.set('n', '', 'resize -2', { desc = 'Decrease Window Height' }) vim.keymap.set('n', '', 'vertical resize -2', { desc = 'Decrease Window Width' }) vim.keymap.set('n', '', 'vertical resize +2', { desc = 'Increase Window Width' }) -- Visual vim.keymap.sets vim.keymap.set('v', 'r', '"hy:%s/h//g') -- Replace all instances of highlighted words vim.keymap.set('v', '', ':sort') -- Sort highlighted text in visual mode with Control+S vim.keymap.set('v', 'K', ":m '>-2gv=gv") -- Move current line up vim.keymap.set('v', 'J', ":m '>+1gv=gv") -- Move current line down --utility vim.keymap.setpings vim.keymap.set('n', 'n', 'nzzzv') -- keep the cursor centered when doing 'n' vim.keymap.set('n', 'N', 'Nzzzv') -- keep the cursor centered when doing 'N' vim.keymap.set('n', 'J', 'mzJ`z', { desc = 'Join line without moving the cursor' }) vim.keymap.set('n', 'cn', '*``cgn', { desc = 'Change next match by pressing dot (.)' }) vim.keymap.set('n', 'cN', '*``cgN', { desc = 'Change previous match by pressing dot (.)' }) vim.keymap.set('n', 'vp', '`[v`]', { desc = 'Select pasted text' }) vim.keymap.set('n', '', 'zz', { desc = 'Scroll down' }) vim.keymap.set('n', '', 'zz', { desc = 'Scroll up' }) vim.keymap.set({ 'n', 'v' }, 'y', '"+y', { desc = 'Copy to system clipboard' }) vim.keymap.set({ 'n', 'v' }, 'p', '"+p', { desc = 'Paste from system clipboard' }) vim.keymap.set({ 'i' }, '', '', { desc = 'Move cursor to right' }) vim.keymap.set({ 'i' }, '', '', { desc = 'Move cursor to right' }) -- Better window management vim.keymap.set('n', 'hs', ':split', opts) vim.keymap.set('n', 'vs', ':vsplit', opts) vim.keymap.set('n', '', 'h', { desc = 'Move to left split' }) vim.keymap.set('n', '', 'j', { desc = 'Move to below split' }) vim.keymap.set('n', '', 'k', { desc = 'Move to above split' }) vim.keymap.set('n', '', 'l', { desc = 'Move to right split' }) vim.keymap.set('n', '', 'resize -2', { desc = 'Resize split up' }) vim.keymap.set('n', '', 'resize +2', { desc = 'Resize split down' }) vim.keymap.set('n', '', 'vertical resize -2', { desc = 'Resize split left' }) vim.keymap.set('n', '', 'vertical resize +2', { desc = 'Resize split right' }) -- Stay in indent mode vim.keymap.set('v', '<', '', '>gv', { desc = '(V) Indent to right' }) -- insert semicolon in the end -- vim.keymap.set('i', '', 'miA;`ii', { desc = 'insert semicolon in the end' }) -- Change text without putting it into the vim register, vim.keymap.set({ 'n', 'x' }, 'c', '"_c', { desc = 'Change without yanking' }) vim.keymap.set({ 'n', 'x' }, 'C', '"_C', { desc = 'Change without yanking' }) vim.keymap.set({ 'n', 'x' }, 'cc', '"_cc', { desc = 'Change without yanking' }) vim.keymap.set({ 'n', 'x' }, 'x', '"_x', { desc = 'delete without yanking' }) -- Better escape using jk in insert and terminal mode vim.keymap.set('i', 'jk', '') vim.keymap.set('i', 'kj', '') vim.keymap.set('i', 'jj', '') -- Terminal Mappings vim.keymap.set('t', 'jk', '') vim.keymap.set('t', 'kj', '') vim.keymap.set('t', '', '') -- save file vim.keymap.set({ 'i', 'v', 'n', 's' }, '', 'wa', { desc = 'Save all file' })