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
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> |
|
|
|
]])
|
|
|