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 nmap('j', 'gj') nmap('k', 'gk') -- maintain cursor position when joining lines nmap('J', 'mzJ`z') -- retain selection when indenting/unindenting in visual mode vmap('>', '>gv') vmap('<', '<gv') -- place next/previous search result in center of screen nmap('n', 'nzzzv') nmap('N', 'Nzzzv') -- select all nmap('', 'ggG') -- easier window navigation nmap('', 'j') nmap('', 'k') nmap('', 'h') nmap('', 'l') -- window resizing nmap('', 'resize +1') nmap('', 'resize -1') nmap('', 'vertical resize -1') nmap('', 'vertical resize +1') -- easy tab navigation nmap('', 'tabnext', { silent = true }) nmap('', 'tabprevious', { silent = true }) -- move lines up and down 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 imap('', '^') imap('', '$') -- move to begin of line in command mode ( moves to end by default) cmap('', '') -- navigate items in quickfix list nmap('', 'cnextzz', { silent = true }) nmap('', 'cpreviouszz', { silent = true }) -- cycle through line numbering modes nmap('ln', 'set nonumber norelativenumber', { silent = true }) nmap('ll', 'set number norelativenumber', { silent = true }) nmap('lr', 'set number relativenumber', { silent = true }) -- toggle options 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 nmap('bg', [[let &background = &background ==? 'light' ? 'dark' : 'light']]) -- disable highlight until next search nmap('h', 'nohlsearch') -- more convenient way of entering normal mode from terminal mode tmap([[]], [[]]) -- recall older/recent command-line from history cmap('', '') cmap('', '')