local opts = { noremap = true, silent = true } local keymap = vim.keymap.set -- Exit file keymap('n', 'pv', ':bd', opts) -- Vertical Movement with centering keymap('n', '', 'zz', opts) keymap('n', '', 'zz', opts) keymap('n', '}', '}zz', opts) keymap('n', '{', '{zz', opts) keymap('n', 'n', 'nzzzv', opts) keymap('n', 'N', 'Nzzzv', opts) -- Resize with arrows keymap('n', '', ':resize -2', opts) keymap('n', '', ':resize +2', opts) keymap('n', '', ':vertical resize -2', opts) keymap('n', '', ':vertical resize +2', opts) -- Navigate buffers keymap('n', '', ':bnext', opts) keymap('n', '', ':bprevious', opts) -- Move text up and down keymap('n', '', ':m .+1==', opts) keymap('n', '', ':m .-2==', opts) keymap('v', '', ":m '>+1gv=gv", opts) keymap('v', '', ":m '<-2gv=gv", opts) keymap('x', '', ":m '>+1gv=gv", opts) keymap('x', '', ":m '<-2gv=gv", opts) -- Insert -- -- Press jk fast to exit insert mode keymap('i', 'jk', '', opts) keymap('i', 'kj', '', opts) -- Visual -- -- Press jk fast to exit visual mode keymap('v', 'jk', '', opts) keymap('v', 'kj', '', opts) -- Stay in indent mode keymap('v', '<', '', '>gv^', opts) -- Paste without yanking in visual mode keymap('v', 'p', '"_dP', opts) -- Visual Block -- -- Move text up and down keymap('x', 'J', ":m '>+1gv=gv", opts) keymap('x', 'K', ":m '<-2gv=gv", opts) -- Quickfix Step File keymap('n', '', ':cnext', opts) keymap('n', '', ':cprev', opts) -- Toggle diagnostics visibility keymap('n', 'td', function() local config = vim.diagnostic.config() if config.virtual_text == false and config.signs == false and config.underline == false then -- Diagnostics are currently disabled, enable them vim.diagnostic.config({ virtual_text = true, signs = true, underline = true, }) else -- Diagnostics are currently enabled, disable them vim.diagnostic.config({ virtual_text = false, signs = false, underline = false, }) end end, { desc = '[T]oggle [D]iagnostics' }) -- Restart LSP keymap('n', 'lr', ':LspRestart', { desc = '[L]SP [R]estart' })