local vertical_resize_step = 4 local horizontal_resize_step = 8 local small_step = 5 local big_step = 25 vim.keymap.set('n', 'w', 'w', { desc = 'Write buffer' }) vim.keymap.set('n', 'q', 'q', { desc = 'Close window' }) vim.keymap.set('n', 'c', 'bpbd#', { desc = 'Close buffer' }) vim.keymap.set('n', 'h', 'nohl', { desc = 'Clear highlight' }) vim.keymap.set('n', 'z', 'set wrap! wrap?', { desc = 'Toggle wrap' }) vim.keymap.set('n', 'x', 'set cursorline! cursorline?', { desc = 'Toggle cursorline' }) vim.keymap.set('n', '', 'k', { desc = 'Move to upper window' }) vim.keymap.set('n', '', 'j', { desc = 'Move to lower window' }) vim.keymap.set('n', '', 'h', { desc = 'Move to left window' }) vim.keymap.set('n', '', 'l', { desc = 'Move to right window' }) vim.keymap.set('n', '', 'resize +' .. vertical_resize_step .. '', { desc = 'Increase window height' }) vim.keymap.set('n', '', 'resize -' .. vertical_resize_step .. '', { desc = 'Decrease window height' }) vim.keymap.set('n', '', 'vertical resize -' .. horizontal_resize_step .. '', { desc = 'Decrease window width' }) vim.keymap.set('n', '', 'vertical resize +' .. horizontal_resize_step .. '', { desc = 'Increase window width' }) vim.keymap.set({'n', 'v'}, '', small_step .. 'k', { desc = 'Move cursor up ' .. small_step .. ' lines' }) vim.keymap.set({'n', 'v'}, '', small_step .. 'j', { desc = 'Move cursor down ' .. small_step .. ' lines' }) vim.keymap.set({'n', 'v'}, '', small_step .. '' .. small_step .. 'k', { desc = 'Scroll up ' .. small_step .. ' lines' }) vim.keymap.set({'n', 'v'}, '', small_step .. '' .. small_step .. 'j', { desc = 'Scroll down ' .. small_step .. ' lines' }) vim.keymap.set({'n', 'v'}, '', big_step .. 'lua center_cursor()', { desc = 'Page up' }) vim.keymap.set({'n', 'v'}, '', big_step .. 'lua center_cursor()', { desc = 'Page down' }) vim.keymap.set({'n', 'v'}, '', '^', { desc = 'Move to beginning of line' }) vim.keymap.set({'n', 'v'}, '', '$', { desc = 'Move to end of line' }) vim.keymap.set('n', 'zz', center_cursor, { desc = 'Center cursor vertically' }) vim.keymap.set('i', '', '' .. small_step .. 'k', { desc = 'Move cursor up ' .. small_step .. ' lines' }) vim.keymap.set('i', '', '' .. small_step .. 'j', { desc = 'Move cursor down ' .. small_step .. ' lines' }) vim.keymap.set('i', '', '' .. small_step .. '' .. small_step .. 'k', { desc = 'Scroll up ' .. small_step .. ' lines' }) vim.keymap.set('i', '', '' .. small_step .. '' .. small_step .. 'j', { desc = 'Scroll down ' .. small_step .. ' lines' }) vim.keymap.set('i', '', '' .. big_step .. 'lua center_cursor()', { desc = 'Page up' }) vim.keymap.set('i', '', '' .. big_step .. 'lua center_cursor()', { desc = 'Page down' }) vim.keymap.set('i', '', '^', { desc = 'Move to beginning of line' }) vim.keymap.set('i', '', '$', { desc = 'Move to end of line' }) -- is interpreted as (^H) by my terminal. You can check yours with in insert mode. vim.keymap.set('i', '', '', { desc = 'Remove word backwards' }) vim.keymap.set('i', '', '"_dw', { desc = 'Remove word forwards' }) vim.keymap.set('n', '', '"_dd', { desc = 'Delete line without yanking' }) vim.keymap.set('v', '', '"_d', { desc = 'Delete selection without yanking' }) vim.keymap.set('n', '', 'mzk"_ddg`z', { desc = 'Delete line above without yanking' }) vim.keymap.set('n', '', 'call append(line("."), "")', { desc = 'Insert newline below' }) vim.keymap.set('i', '', '$', { desc = 'Insert newline below and go to it' }) vim.keymap.set({'n', 'i'}, '', 'm -2', { desc = 'Move line up' }) vim.keymap.set({'n', 'i'}, '', 'm +1', { desc = 'Move line down' }) vim.cmd [[ xnoremap :m-2gv=gv xnoremap :m'>+gv=gv ]] vim.keymap.set('v', '>', '>gv', { desc = 'Indent selection right' }) vim.keymap.set('v', '<', '', { desc = 'Jump to definition' }) vim.keymap.set('n', '/', 'gcc', { remap = true, desc = 'Toggle comment' }) vim.keymap.set('v', '/', 'gcgv', { remap = true, desc = 'Toggle comment' }) vim.keymap.set('n', 'gl', vim.diagnostic.open_float, { desc = 'Show diagnostics' }) vim.keymap.set('n', 'gj', function() vim.diagnostic.jump { count = 1 } end, { desc = 'Next diagnostic' }) vim.keymap.set('n', 'gk', function() vim.diagnostic.jump { count = -1 } end, { desc = 'Previuous diagnostic' }) vim.keymap.set('n', 'la', vim.lsp.buf.code_action, { desc = 'Code actions' }) vim.keymap.set('n', 'lf', function() vim.lsp.buf.format { async = true } end, { desc = 'Format buffer' }) vim.keymap.set('n', 'ln', vim.lsp.buf.rename, { desc = 'Rename symbol' }) vim.keymap.set('n', 'lr', vim.lsp.buf.references, { desc = 'List references' }) for _, keymap in pairs(PLUGIN_KEYMAPS) do keymap() end