local remap = vim.api.nvim_set_keymap -- Remap escape keys to something usable on home row remap('i', 'jk', '', { noremap = true }) remap('c', 'jk', '', { noremap = true }) remap('i', '', '', { noremap = true }) remap('c', '', '', { noremap = true }) -- Use Q to execute default register. remap('n', 'Q', '', { noremap = true }) -- Save remap('n', 'w', ':w', { noremap = true }) -- Search and Replace remap('n', 'c.', ':%s//g', { noremap = true }) remap('n', 'c.', ':%s/\\<\\>//g', { noremap = true }) -- Quit remap('n', 'x', ':x', { noremap = true }) remap('n', 'q', ':q', { noremap = true }) remap('n', 'Q', ':qa', { noremap = true }) -- Navigate buffers remap('n', '[b', ':bprevious', { noremap = true }) remap('n', ']b', ':bnext', { noremap = true }) remap('n', '[B', ':bfirst', { noremap = true }) remap('n', ']B', ':blast', { noremap = true }) -- Reload buffer remap('n', 'e', ':e', { noremap = true }) remap('n', 'E', ':bufdo', { noremap = true }) -- Tab navigation remap('n', 'tp', ':tabprevious', { noremap = true }) remap('n', 'tn', ':tabnext', { noremap = true }) remap('n', 'tf', ':tabfirst', { noremap = true }) remap('n', 'tl', ':tablast', { noremap = true }) remap('n', 'tN', ':tabnew', { noremap = true }) remap('n', 'tc', ':tabclose', { noremap = true }) -- For tags remap('n', '[t', ':tprevious', { noremap = true }) remap('n', ']t', ':tNext', { noremap = true }) remap('n', '[T', ':tfirst', { noremap = true }) remap('n', ']T', ':tlast', { noremap = true }) remap('n', 'ts', ':tselect ', { noremap = true }) -- Quickfix list mappings remap('n', 'qo', ':copen', { noremap = true }) remap('n', 'qc', ':cclose', { noremap = true }) remap('n', '[q', ':cprevious', { noremap = true }) remap('n', ']q', ':cnext', { noremap = true }) remap('n', '[Q', ':cfirst', { noremap = true }) remap('n', ']Q', ':clast', { noremap = true }) -- Location list mappings remap('n', 'Lo', ':lopen', { noremap = true }) remap('n', 'Lc', ':lclose', { noremap = true }) remap('n', '[l', ':lprevious', { noremap = true }) remap('n', ']l', ':lnext', { noremap = true }) remap('n', '[L', ':lfirst', { noremap = true }) remap('n', ']L', ':lfirst', { noremap = true }) -- Preview tags remap('n', 'pt', ':ptag ', { noremap = true }) remap('n', '[p', ':ptprevious', { noremap = true }) remap('n', ']p', ':ptnext', { noremap = true }) remap('n', 'po', ':ppop', { noremap = true }) remap('n', 'pc', ':pc', { noremap = true }) remap('n', 'pi', ':psearch ', { noremap = true }) -- Short cuts for setting fold methods remap('n', 'zmi', ':set foldmethod=indent', { noremap = true }) remap('n', 'zmm', ':set foldmethod=manual', { noremap = true }) remap('n', 'zme', ':set foldmethod=expr', { noremap = true }) remap('n', 'zmk', ':set foldmethod=marker', { noremap = true }) remap('n', 'zms', ':set foldmethod=syntax', { noremap = true }) -- Key Bindings to help with terminal mode remap('t', 'jk', '', { noremap = true }) -- Key bindings to move between window splits remap('n', '0', '0w', { noremap = true }) remap('n', '1', '1w', { noremap = true }) remap('n', '2', '2w', { noremap = true }) remap('n', '3', '3w', { noremap = true }) remap('n', '4', '4w', { noremap = true }) remap('n', '5', '5w', { noremap = true }) remap('n', '6', '6w', { noremap = true }) remap('n', '7', '7w', { noremap = true }) remap('n', '8', '8w', { noremap = true }) remap('n', '9', '9w', { noremap = true }) -- Disable Arrow Keys remap('i', '', '', { noremap = true }) remap('i', '', '', { noremap = true }) remap('i', '', '', { noremap = true }) remap('i', '', '', { noremap = true }) remap('n', '', '', { noremap = true }) remap('n', '', '', { noremap = true }) remap('n', '', '', { noremap = true }) remap('n', '', '', { noremap = true }) -- Tag helpers remap('n', '', ':vsp :tag ', { noremap = true }) remap('n', '', ':sp :tag ', { noremap = true }) remap('n', 'n', ':nohlsearch', { noremap = true, silent = true }) -- Move across wrapped lines like regular lines -- Go to the first non-blank character of a line remap('n', '0', '^', { noremap = true }) -- Just in case you need to go to the very beginning of a line remap('n', '^', '0', { noremap = true }) -- Make dot work on visually selected lines remap('v', '.', ':norm.', { noremap = true }) -- Go to the last file we changed remap('n', '', '', { noremap = true }) -- Use Tab & S-Tab instead of C-g and C-t for incsearch remap('c', '', 'getcmdtype() =~ \'[?/]\' ? \'\' : feedkeys(\'\', \'int\')[1]', { noremap = true, expr = true }) remap('c', '', 'getcmdtype() =~ \'[?/]\' ? \'\' : feedkeys(\'\', \'int\')[1]', { noremap = true, expr = true }) remap('n', '', ':call SyntaxAttr#SyntaxAttr()', { noremap = true })