-- zero vim.keymap.set({ 'n', 'o', 'x' }, '0', [[getline('.')[0 : col('.') - 2] =~# '^\s\+$' ? '0' : '^']], { expr = true }) vim.keymap.set({ 'n', 'o', 'x' }, '^', '0') -- Neovim default vim.keymap.del({ 'i' }, '') -- Buffer vim.keymap.set({ 'n' }, '', '') -- Save vim.keymap.set({ 'n' }, 'w', 'update') vim.keymap.set({ 'n' }, 'W', 'update!') -- Automatically indent with i and A vim.keymap.set({ 'n' }, 'i', [[len(getline('.')) ? 'i' : '"_cc']], { expr = true }) vim.keymap.set({ 'n' }, 'A', [[len(getline('.')) ? 'A' : '"_cc']], { expr = true }) vim.keymap.set({ 'n' }, 'gi', 'i') -- Split undo history when vim.keymap.set("i", "", "u", { silent = true }) -- Ignore register vim.keymap.set({ 'n' }, 'x', '"_x') -- tagjump vim.keymap.set({ 'n' }, 's', 'wincmd ]') vim.keymap.set({ 'n' }, 'v', 'vertical wincmd ]') vim.keymap.set({ 'n' }, 't', 'tab wincmd ]') vim.keymap.set({ 'n' }, 'r', '}') -- Quickfix vim.keymap.set({ 'n' }, '[c', 'cprevious') vim.keymap.set({ 'n' }, ']c', 'cnext') vim.keymap.set({ 'n' }, '[q', 'colder') vim.keymap.set({ 'n' }, ']q', 'cnewer') -- Location List vim.keymap.set({ 'n' }, '[l', 'lprevious') vim.keymap.set({ 'n' }, ']l', 'lnext') -- InsertMode and CmdlineMode vim.keymap.set({ 'i', 'c' }, '', '') vim.keymap.set({ 'i', 'c' }, '', '') vim.keymap.set({ 'i' }, '', 'U') vim.keymap.set({ 'i' }, '', 'U') vim.keymap.set({ 'i' }, '', 'U') vim.keymap.set({ 'c' }, '', '') vim.keymap.set({ 'c' }, '', '') vim.keymap.set({ 'c' }, '', '') vim.keymap.set({ 'c' }, '', '') vim.keymap.set({ 'c' }, '', '') -- Indent vim.keymap.set({ 'n' }, '<', '<<') vim.keymap.set({ 'n' }, '>', '>>') vim.keymap.set({ 'x' }, '<', '', '>gv') local function focus_floating() if vim.fn.empty(vim.api.nvim_win_get_config(vim.fn.win_getid()).relative) == 0 then vim.cmd([[wincmd p]]) return end for winnr = 1, vim.fn.winnr('$') do local winid = vim.fn.win_getid(winnr) local conf = vim.api.nvim_win_get_config(winid) if conf.focusable and vim.fn.empty(conf.relative) == 0 then vim.fn.win_gotoid(winid) return end end vim.cmd([[normal! ]]) end vim.keymap.set({ 'n' }, '', focus_floating) -- Tab vim.keymap.set({ 'n' }, '(tab)t', 'tablast tabedit') vim.keymap.set({ 'n' }, '(tab)d', 'tabclose') vim.keymap.set({ 'n' }, '(tab)h', 'tabprevious') vim.keymap.set({ 'n' }, '(tab)l', 'tabnext') vim.keymap.set({ 'n' }, '(tab)m', 'T') -- Resize vim.keymap.set({ 'n' }, '', 'vertical resize -1') vim.keymap.set({ 'n' }, '', 'vertical resize +1') vim.keymap.set({ 'n' }, '', 'resize -1') vim.keymap.set({ 'n' }, '', 'resize +1') -- Macro vim.keymap.set({ 'n' }, 'Q', '@q') -- Replace vim.keymap.set({ 'n' }, 'r', [[:%s/\v//g]]) vim.keymap.set({ 'x' }, 'r', [["sy:%s/\v=substitute(@s, '/', '\\/', 'g')//g]]) -- C-g vim.keymap.set({ 'n' }, '', '2') -- Clipboard vim.keymap.set({ 'n' }, 'sc', function() vim.fn.setreg('+', vim.fn.getreg('"')) vim.cmd([[echo 'Copied " register to OS clipboard']]) end) vim.keymap.set({ 'n', 'x' }, 'sp', function() vim.fn.setreg('"', vim.fn.getreg('+')) vim.cmd([[echo 'Copied from OS clipboard to " register']]) end) -- Terminal vim.keymap.set({ 't' }, '', [[]]) vim.api.nvim_create_autocmd({ 'TermOpen' }, { pattern = '*', callback = function() vim.opt_local.number = false vim.opt_local.relativenumber = false vim.keymap.set({ 'n' }, 'i', 'i', { buffer = true }) end, }) -- quit vim.api.nvim_create_autocmd({ 'FileType' }, { pattern = { 'qf', 'help' }, callback = function() vim.keymap.set({ 'n' }, 'q', 'quit', { buffer = true }) end, }) -- Cmdwin vim.api.nvim_create_autocmd({ 'CmdwinENter' }, { pattern = '*', callback = function() vim.opt_local.number = true vim.opt_local.relativenumber = false vim.keymap.set({ 'n' }, '', '', { buffer = true }) vim.keymap.set({ 'n' }, 'q', 'q', { buffer = true, nowait = true }) vim.keymap.set({ 'i' }, 'q', 'l', { buffer = true }) end, })