local map = vim.keymap.set local function nmap(lhs, rhs, opts) map('n', lhs, rhs, opts) end local function swap(mode, bind1, bind2) local tmp=bind1 map(mode, bind1, bind2) map(mode, bind2, tmp) end local function swapnv(bind1, bind2) swap({'n', 'v'}, bind1, bind2) end swapnv('m', 'h') swapnv('n', 'j') swapnv('e', 'k') swapnv('i', 'l') swapnv('M', 'H') swapnv('N', 'J') --swapnv('E', 'K') swapnv('I', 'L') nmap('tn', ':tabnew', { desc = "Open a new tab" }) nmap('tc', ':tabc', { desc = "Close the current tab" }) nmap('tm', ':tabp', { desc = "Go to previous tab" }) nmap('ti', ':tabn', { desc = "Go to next tab" }) nmap('wh', ':vne', { desc = "Create vertical split" }) nmap('wv', ':new', { desc = "Create horizontal split" }) nmap('wc', ':clo', { desc = "Close current window" }) nmap('wm', '', { desc = "Focus window left of the current one" }) nmap('wn', '', { desc = "Focus window below the current one" }) nmap('we', '', { desc = "Focus window above the current one" }) nmap('wi', '', { desc = "Focus window right of the current one" }) nmap('fo', 'Telescope find_files', { silent = true }) nmap('?', 'Telescope live_grep', { silent = true }) nmap('to', 'te', { silent = true; desc = "Open a terminal buffer in the current window." })