diff --git a/config/nvim/lua/user/keymaps.lua b/config/nvim/lua/user/keymaps.lua index 4146342..a641ffa 100644 --- a/config/nvim/lua/user/keymaps.lua +++ b/config/nvim/lua/user/keymaps.lua @@ -1,78 +1,83 @@ -local map = vim.keymap.set +local partial = require('user.util').partial +local nmap = partial(vim.keymap.set, 'n') +local imap = partial(vim.keymap.set, 'i') +local vmap = partial(vim.keymap.set, 'v') +local cmap = partial(vim.keymap.set, 'c') +local tmap = partial(vim.keymap.set, 't') -- better navigation for wrapped lines -map('n', 'j', 'gj') -map('n', 'k', 'gk') +nmap('j', 'gj') +nmap('k', 'gk') -- maintain cursor position when joining lines -map('n', 'J', 'mzJ`z') +nmap('J', 'mzJ`z') -- retain selection when indenting/unindenting in visual mode -map('v', '>', '>gv') -map('v', '<', '<gv') +vmap('>', '>gv') +vmap('<', '<gv') -- place next/previous search result in center of screen -map('n', 'n', 'nzzzv') -map('n', 'N', 'Nzzzv') +nmap('n', 'nzzzv') +nmap('N', 'Nzzzv') -- select all -map('n', '', 'ggG') +nmap('', 'ggG') -- easier window navigation -map('n', '', 'j') -map('n', '', 'k') -map('n', '', 'h') -map('n', '', 'l') +nmap('', 'j') +nmap('', 'k') +nmap('', 'h') +nmap('', 'l') -- window resizing -map('n', '', 'resize +1') -map('n', '', 'resize -1') -map('n', '', 'vertical resize -1') -map('n', '', 'vertical resize +1') +nmap('', 'resize +1') +nmap('', 'resize -1') +nmap('', 'vertical resize -1') +nmap('', 'vertical resize +1') -- easy tab navigation -map('n', '', 'tabnext', { silent = true }) -map('n', '', 'tabprevious', { silent = true }) +nmap('', 'tabnext', { silent = true }) +nmap('', 'tabprevious', { silent = true }) -- move lines up and down -map('n', '', [[:move .+1==]], { silent = true }) -map('n', '', [[:move .-2==]], { silent = true }) -map('v', '', [[:move '>+1gv=gv]], { silent = true }) -map('v', '', [[:move '<-2gv=gv]], { silent = true }) -map('i', '', [[:move .+1==gi]], { silent = true }) -map('i', '', [[:move .-2==gi]], { silent = true }) +nmap('', [[:move .+1==]], { silent = true }) +nmap('', [[:move .-2==]], { silent = true }) +vmap('', [[:move '>+1gv=gv]], { silent = true }) +vmap('', [[:move '<-2gv=gv]], { silent = true }) +imap('', [[:move .+1==gi]], { silent = true }) +imap('', [[:move .-2==gi]], { silent = true }) -- move to begin/end of line in insert mode -map('i', '', '^') -map('i', '', '$') +imap('', '^') +imap('', '$') -- move to begin of line in command mode ( moves to end by default) -map('c', '', '') +cmap('', '') -- navigate items in quickfix list -map('n', '', 'cnextzz', { silent = true }) -map('n', '', 'cpreviouszz', { silent = true }) +nmap('', 'cnextzz', { silent = true }) +nmap('', 'cpreviouszz', { silent = true }) -- cycle through line numbering modes -map('n', 'ln', 'set nonumber norelativenumber', { silent = true }) -map('n', 'll', 'set number norelativenumber', { silent = true }) -map('n', 'lr', 'set number relativenumber', { silent = true }) +nmap('ln', 'set nonumber norelativenumber', { silent = true }) +nmap('ll', 'set number norelativenumber', { silent = true }) +nmap('lr', 'set number relativenumber', { silent = true }) -- toggle options -map('n', 'sl', 'set list! | set list?', { silent = true }) -map('n', 'sr', 'set wrap! | set wrap?', { silent = true }) -map('n', 'sp', 'set spell! | set spell?', { silent = true }) +nmap('sl', 'set list! | set list?', { silent = true }) +nmap('sr', 'set wrap! | set wrap?', { silent = true }) +nmap('sp', 'set spell! | set spell?', { silent = true }) -- quickly change background -map('n', 'bg', [[let &background = &background ==? 'light' ? 'dark' : 'light']]) +nmap('bg', [[let &background = &background ==? 'light' ? 'dark' : 'light']]) -- disable highlight until next search -map('n', 'h', 'nohlsearch') +nmap('h', 'nohlsearch') -- more convenient way of entering normal mode from terminal mode -map('t', [[]], [[]]) +tmap([[]], [[]]) -- recall older/recent command-line from history -map('c', '', '') -map('c', '', '') +cmap('', '') +cmap('', '')