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.
126 lines
4.8 KiB
126 lines
4.8 KiB
5 months ago
|
|
||
|
|
||
|
-- 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>
|
||
|
|
||
|
]])
|