function map(mode, shortcut, command) vim.keymap.set(mode, shortcut, command, { noremap = true, silent = true }) end vim.g.mapleader = ' ' -- buffers map('n', 'b', ':buffers:buffer') map('n', '', ':bprevious') map('n', '', ':bnext') map('i', '', ':bprevious') map('i', '', ':bnext') -- tabs map('n', '', ':tabprevious') map('n', '', ':tabnext') map('i', '', ':tabprevious') map('i', '', ':tabnext') -- remove word map('n', '', 'db') vim.cmd([[map! ]]) -- TODO: figure out how to do that with lua map('n', '', 'dw') map('i', '', 'dw') -- move window without moving cursor map('n', '', '') map('n', '', '') -- system clipboard map('v', 'y', '"+y') map('n', 'p', '"+p') -- toggle between beginning of line and beginning of text map({ 'n', 'i', 'v' }, '', function() local row, col = unpack(vim.api.nvim_win_get_cursor(0)) if (col == 0) then local col_new = vim.api.nvim_get_current_line():match('^%s*'):len() vim.api.nvim_win_set_cursor(0, { row, col_new }) else vim.api.nvim_win_set_cursor(0, { row, 0 }) end end ) map('n', '', '==') -- re-indent line