-- Swap : and ; in normal mode vim.keymap.set('n', ';',':', {desc="Swaps semi colon to colon"}) vim.keymap.set('n', ':',';', {desc="Swaps semi colon to colon"}) -- Swap : and ; in visual mode vim.keymap.set('v', ';',':', {desc="Swaps semi colon to colon"}) vim.keymap.set('v', ':',';', {desc="Swaps semi colon to colon"}) -- Make jj in insert mode go to normal mode vim.keymap.set('i', 'jj','', {desc="jj to escape"}) -- Make ctrl+hjkl change focus between windows vim.keymap.set('n', '','h', {desc="Move to left window"}) vim.keymap.set('n', '','j', {desc="Move to below window"}) vim.keymap.set('n', '','k', {desc="Move to above window"}) vim.keymap.set('n', '','l', {desc="Move to left window"}) if vim.fn.has('clipboard') == 1 then vim.keymap.set('v', '','"+y"', {desc="Copy to system clipboard"}) vim.keymap.set('i', '','"+pa', {desc="Paste from system clipboard"}) end -- Fix previous spelling mistake in insert mode -- Shamelessly taken from https://castel.dev/post/lecture-notes-1/ -- u - break undo sequence (new change) -- - go into normal mode -- [s - go to previous spelling mistake -- 1z= - change to the top spelling suggestion -- `] - go to the end of the last changed word -- a - enter insert mode -- u - break undo sequence (new change) vim.keymap.set('i', '','u[s1z=`]au', {desc="Fix previous spelling mistake"}) -- Do Shebang line -- - go into normal mode -- :silent - run command silently -- s/^/…/ - write at the begining of the line -- - used to seperate commands -- filetype detect - attempt to detect filetype again -- :nohlsearch - un-hilight the search pattern vim.keymap.set('i', '', ':silent s/^/#!\\/usr\\/bin\\/env / filetype detect:nohlsearcho', {desc="do shebang line"}) -- Makes delete key work properly in insert mode vim.keymap.set('i', '', '', {desc="Delete next character"}) -- Compiles documents -- The uppercase versions don't push enter an extra time resulting in seeing -- the output of the compile command. Useful for debugging vim.keymap.set('n', 'cc', ':w! | !compiler "%"' ) vim.keymap.set('n', 'cC', ':w! | !compiler "%"' ) vim.keymap.set('n', 'cl', ':w! | !compiler "%" letter' ) vim.keymap.set('n', 'cL', ':w! | !compiler "%" letter' ) vim.keymap.set('n', 'cf', ':w! | !rt partialPdf --overwrite "%" ' ) vim.keymap.set('n', 'cF', ':w! | !rt partialPdf --overwrite "%" ' ) vim.keymap.set('n', 'Cf', ':w! | !rt fullReport . --overwrite ' ) vim.keymap.set('n', 'CF', ':w! | !rt fullReport . --overwrite ' ) -- Opens the compiled documents -- If something like html, it doesn't need to be compiled first vim.keymap.set('n', 'co', ':!opout "%"', {desc="open compiled document"}) -- Makes vim default to very magic searching vim.keymap.set({'n','v'}, '/', '/\\v', {desc="very magic search"}) -- re-select visual selection when using < or > vim.keymap.set('v', '<', '', '>gv', {desc="Increase indent and re-select"}) -- Easy quickfix jumping -- zO - Opens folds -- zz - Centers vertically vim.keymap.set('n', '[c', ':cpreviouszOzz', {desc="previous quickfix"}) vim.keymap.set('n', ']c', ':cnextzOzz', {desc="next quickfix"}) -- Debugging mappings -- See `:help vim.diagnostic.*` for documentation on any of the below functions vim.keymap.set('n', 'e', vim.diagnostic.open_float) vim.keymap.set('n', '[d', vim.diagnostic.goto_prev) vim.keymap.set('n', ']d', vim.diagnostic.goto_next) --vim.keymap.set('n', 'q', vim.diagnostic.setloclist) -- Open currend directory vim.keymap.set('n', '-', ':e %:h', {desc="Open directory"}) -- Leaving these as old-style to remind me to come back and make them proper lua vim.cmd([[ " Mappings for my encoding functions vnoremap [b :call mine#encoding#wrapper('base64Encode') vnoremap ]b :call mine#encoding#wrapper('base64Decode') vnoremap [u :call mine#encoding#wrapper('urlEncode') vnoremap ]u :call mine#encoding#wrapper('urlDecode') vnoremap [U :call mine#encoding#wrapper('urlEncodeAll') vnoremap ]U :call mine#encoding#wrapper('urlDecode') vnoremap [h :call mine#encoding#wrapper('hexEncode') vnoremap ]h :call mine#encoding#wrapper('hexDecode') " Run proselint and put it in the quickfix list nnoremap p :call mine#functions#proselint() if has('nvim') if !empty($SUDO_ASKPASS) cnoremap WW w !sudo -A tee % > /dev/null else cnoremap WW echo "SUDO_ASKPASS variable needs to be set" endif else cnoremap WW w !sudo tee % > /dev/null endif nnoremap ve :edit $HOME/.config/nvim/init.vim ]])