nvim-configs/lua/keymap.lua

79 lines
5.3 KiB
Lua

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