vim.g.mapleader = ' ' local keymap = vim.keymap keymap.set('i', 'jj', '') keymap.set('n', 'nh', ':nohl', { silent = true }) keymap.set('n', 'to', ':tabnew', { silent = true }) -- open new tab keymap.set('n', 'tx', ':tabclose', { silent = true }) -- close current tab keymap.set('n', 'tn', ':tabn', { silent = true }) -- go to next tab keymap.set('n', 'tp', ':tabp', { silent = true }) -- go to previous tab -- buffers keymap.set('n', 'gn', ':bn', { silent = true }) keymap.set('n', 'gp', ':bp', { silent = true }) keymap.set('n', 'g[', ':b#', { silent = true }) keymap.set('n', '', ':w') keymap.set('n', 'x', ':bd', { silent = true }) -- primeagen keymap.set('v', 'J', ":m '>+1gv=gv", { silent = true }) keymap.set('v', 'K', ":m '<-2gv=gv", { silent = true }) -- [search] keymap.set('n', 'n', 'nzzzh', { silent = true }) keymap.set('n', 'N', 'Nzzzh', { silent = true }) -- [copy/paste] keymap.set('x', 'p', '"_dP') keymap.set('n', 'y', '"+yiw') ---------------------- -- Plugin Keybinds ---------------------- -- neo-tree keymap.set('n', 'e', ':Neotree toggle current', { noremap = true, silent = true }) -- toggle file explorer keymap.set('n', 'gt', ':Neotree toggle current reveal_force_cwd', { silent = true }) -- toggle file explorer -- telescope keymap.set('n', 'sf', 'Telescope find_files', { silent = true }) -- find files within current working directory, respects .gitignore keymap.set('n', 'sg', 'Telescope live_grep', { silent = true }) -- find string in current working directory as you type keymap.set('n', 'sc', 'Telescope grep_string', { silent = true }) -- find string under cursor in current working directory keymap.set('n', 'sb', 'Telescope buffers', { silent = true }) -- list open buffers in current neovim instance keymap.set('n', 'sh', 'Telescope help_tags', { silent = true }) -- list available help tags keymap.set('n', 'sk', 'Telescope keymaps', { silent = true }) -- list available help tags -- git merge keymap.set('n', '1', ':diffget LOCAL') keymap.set('n', '2', ':diffget REMOTE') -- toggleterm keymap.set('n', '', 'ToggleTerm direction=horizontal', { silent = true }) -- vim-sneak -- keymap.set('n', 'f', 'Sneak_s', { silent = true }) -- keymap.set('n', 'F', 'Sneak_S', { silent = true }) -- keymap.set('n', 's', 's', { silent = true }) -- easymotion keymap.set('n', 'f', '(easymotion-prefix)', { silent = true }) keymap.set('n', 'fs', '(easymotion-sn)', { silent = true }) keymap.set('n', 'w', '(easymotion-overwin-f2)', { silent = true }) vim.g.EasyMotion_smartcase = 1 -- Telescope history keymap.set('n', 'fh', 'Telescope file_history history', { silent = true }) -- Define a custom function to move the current buffer to a vertical split with the previous buffer function move_to_vertical_split() local current_buffer = vim.fn.bufnr('%') -- Get the current buffer number local last_buffer = vim.fn.bufnr('#') -- Get the previous buffer number -- Check if last_buffer is set; if not, duplicate the current buffer if last_buffer == -1 then vim.cmd('vsplit') vim.cmd('b ' .. current_buffer) else vim.cmd('vsplit') vim.cmd('b ' .. last_buffer) vim.cmd('wincmd w') -- Switch focus to the original (current) buffer end end -- Map v to the custom function keymap.set('n', 'v', [[:lua move_to_vertical_split()]], { noremap = true, silent = true })