You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

125 lines
4.8 KiB

-- 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','<Esc>', {desc="jj to escape"})
-- Make ctrl+hjkl change focus between windows
vim.keymap.set('n', '<c-h>','<c-w>h', {desc="Move to left window"})
vim.keymap.set('n', '<c-j>','<c-w>j', {desc="Move to below window"})
vim.keymap.set('n', '<c-k>','<c-w>k', {desc="Move to above window"})
vim.keymap.set('n', '<c-l>','<c-w>l', {desc="Move to left window"})
if vim.fn.has('clipboard') == 1 then
vim.keymap.set('v', '<c-c>','"+y"', {desc="Copy to system clipboard"})
vim.keymap.set('i', '<c-v>','<Esc>"+pa', {desc="Paste from system clipboard"})
end
-- Fix previous spelling mistake in insert mode
-- Shamelessly taken from https://castel.dev/post/lecture-notes-1/
-- <c-g>u - break undo sequence (new change)
-- <Esc> - 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
-- <c-g>u - break undo sequence (new change)
vim.keymap.set('i', '<c-l>','<c-g>u<Esc>[s1z=`]a<c-g>u', {desc="Fix previous spelling mistake"})
-- Do Shebang line
-- <Esc> - go into normal mode
-- :silent - run command silently
-- s/^/…/ - write at the begining of the line
-- <bar> - used to seperate commands
-- filetype detect - attempt to detect filetype again
-- :nohlsearch - un-hilight the search pattern
vim.keymap.set('i', '<C-y>', '<Esc>:silent s/^/#!\\/usr\\/bin\\/env / <bar> filetype detect<cr>:nohlsearch<cr>o', {desc="do shebang line"})
-- Makes delete key work properly in insert mode
vim.keymap.set('i', '<del>', '<Right><BS>', {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', '<leader>cc', ':w! | !compiler "<c-r>%"<CR><CR>' )
vim.keymap.set('n', '<leader>cC', ':w! | !compiler "<c-r>%"<CR>' )
vim.keymap.set('n', '<leader>cl', ':w! | !compiler "<c-r>%" letter<CR><CR>' )
vim.keymap.set('n', '<leader>cL', ':w! | !compiler "<c-r>%" letter<CR>' )
vim.keymap.set('n', '<leader>cf', ':w! | !rt partialPdf --overwrite "<c-r>%" <CR><CR>' )
vim.keymap.set('n', '<leader>cF', ':w! | !rt partialPdf --overwrite "<c-r>%" <CR>' )
vim.keymap.set('n', '<leader>Cf', ':w! | !rt fullReport . --overwrite <CR><CR>' )
vim.keymap.set('n', '<leader>CF', ':w! | !rt fullReport . --overwrite <CR>' )
-- Opens the compiled documents
-- If something like html, it doesn't need to be compiled first
vim.keymap.set('n', '<leader>co', ':!opout "<c-r>%"<CR><CR>', {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="Reduce indent and re-select"})
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', ':cprevious<cr>zOzz', {desc="previous quickfix"})
vim.keymap.set('n', ']c', ':cnext<cr>zOzz', {desc="next quickfix"})
-- Debugging mappings
-- See `:help vim.diagnostic.*` for documentation on any of the below functions
vim.keymap.set('n', '<leader>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', '<leader>q', vim.diagnostic.setloclist)
-- Open currend directory
vim.keymap.set('n', '-', ':e %:h<cr>', {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')<cr>
vnoremap ]b :call mine#encoding#wrapper('base64Decode')<cr>
vnoremap [u :call mine#encoding#wrapper('urlEncode')<cr>
vnoremap ]u :call mine#encoding#wrapper('urlDecode')<cr>
vnoremap [U :call mine#encoding#wrapper('urlEncodeAll')<cr>
vnoremap ]U :call mine#encoding#wrapper('urlDecode')<cr>
vnoremap [h :call mine#encoding#wrapper('hexEncode')<cr>
vnoremap ]h :call mine#encoding#wrapper('hexDecode')<cr>
" Run proselint and put it in the quickfix list
nnoremap <leader>p :call mine#functions#proselint()<CR>
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"<cr>
endif
else
cnoremap WW w !sudo tee % > /dev/null
endif
nnoremap <leader>ve :edit $HOME/.config/nvim/init.vim<cr>
]])