-- Helper functions local function map(mode, lhs, rhs) vim.keymap.set(mode, lhs, rhs, { silent = true }) end local function cmd(str) return '' .. str .. '' end -- QOL map('i', 'jk', '') map('n', '', cmd('nohlsearch')) map('n', 'q:', '') vim.keymap.set('n', 'J', 'mzJ`z') vim.keymap.set('n', 'n', 'nzzzv') vim.keymap.set('n', 'N', 'Nzzzv') vim.keymap.set('x', 'J', ":m '>+1gv=gv") vim.keymap.set('x', 'K', ":m '<-2gv=gv") vim.keymap.set('n', 's', [[:%s/\<\>//g]]) -- Easy to use registers map('x', 'p', '"_dP') map({ 'n', 'x' }, 'y', '"+y') map('n', 'Y', '"+y$') map({ 'n', 'x' }, 'd', '"_d') map({ 'n', 'x' }, 'x', '"_x') -- Window navigation map('n', '', 'h') map('n', '', 'l') map('n', '', 'j') map('n', '', 'k') -- Tab management map('n', ']t', cmd('tabnext')) map('n', '[t', cmd('tabprevious')) map('n', 'tt', cmd('tabnew')) map('n', 'tn', cmd('tabnew')) map('n', 'tc', cmd('tabclose')) map('n', 'tl', cmd('tabmove +1')) map('n', 'th', cmd('tabmove -1')) for i = 1, 9 do map('n', string.format('t%d', i), string.format('%dgt', i)) end -- Buffer management map('n', ']b', cmd('bnext')) map('n', '[b', cmd('bprevious')) map('n', 'bl', cmd('ls')) map('n', 'bd', cmd(':bp | bd #')) map('n', 'bo', cmd('%bd|e#')) -- close all except current map('n', 'bb', '') -- toggle between buffers -- Terminal map('n', 'xx', cmd('TermDefault')) map('n', 'xr', cmd('TermRelative')) map('n', 'xs', cmd('TermSplit')) map('n', 'xv', cmd('TermVSplit')) map('t', '', '') map('t', 'h', [[h]]) map('t', 'j', [[j]]) map('t', 'k', [[k]]) map('t', 'l', [[l]]) map('t', 'c', [[bd!]]) map('t', '', [[w]]) -- File explorer map('n', 'e', cmd('NvimTreeToggle')) map('n', 'E', cmd('NvimTreeOpen')) -- Diagnostics map('n', ']d', function() vim.diagnostic.jump({ count = 1, float = true }) end) map('n', '[d', function() vim.diagnostic.jump({ count = -1, float = true }) end) map('n', 'q', vim.diagnostic.setloclist) map('n', 'd', vim.diagnostic.open_float) map('n', 's', vim.lsp.buf.signature_help) map('n', 'gd', vim.lsp.buf.definition) map('n', 'gr', vim.lsp.buf.references) map('n', 'K', vim.lsp.buf.hover) map('n', '', vim.lsp.buf.signature_help)