nvim-kickstart/lua/custom/keymaps.lua

100 lines
4.2 KiB
Lua

vim.g.mapleader = ' '
local keymap = vim.keymap
keymap.set('i', 'jj', '<ESC>')
keymap.set('n', '<leader>nh', ':nohl<CR>', { silent = true })
keymap.set('n', '<leader>to', ':tabnew<CR>', { silent = true }) -- open new tab
keymap.set('n', '<leader>tx', ':tabclose<CR>', { silent = true }) -- close current tab
keymap.set('n', '<leader>tn', ':tabn<CR>', { silent = true }) -- go to next tab
keymap.set('n', '<leader>tp', ':tabp<CR>', { silent = true }) -- go to previous tab
-- buffers
keymap.set('n', 'gn', ':bn<CR>', { silent = true })
keymap.set('n', 'gp', ':bp<CR>', { silent = true })
keymap.set('n', 'g[', ':b#<CR>', { silent = true })
keymap.set('n', '<C-s>', ':w<CR>')
keymap.set('n', '<leader>x', ':bd<CR>', { silent = true })
-- primeagen
keymap.set('v', 'J', ":m '>+1<CR>gv=gv", { silent = true })
keymap.set('v', 'K', ":m '<-2<CR>gv=gv", { silent = true })
-- [search]
keymap.set('n', 'n', 'nzzzh', { silent = true })
keymap.set('n', 'N', 'Nzzzh', { silent = true })
-- [copy/paste]
keymap.set('x', '<leader>p', '"_dP')
keymap.set('n', '<leader>y', '"+yiw')
----------------------
-- Plugin Keybinds
----------------------
-- neo-tree
keymap.set('n', '<leader>e', ':Neotree toggle current<CR>', { noremap = true, silent = true }) -- toggle file explorer
keymap.set('n', '<leader>gt', ':Neotree toggle current reveal_force_cwd<CR>', { silent = true }) -- toggle file explorer
-- telescope
keymap.set('n', '<leader>sf', '<cmd>Telescope find_files<cr>', { silent = true }) -- find files within current working directory, respects .gitignore
keymap.set('n', '<leader>sg', '<cmd>Telescope live_grep<cr>', { silent = true }) -- find string in current working directory as you type
keymap.set('n', '<leader>sc', '<cmd>Telescope grep_string<cr>', { silent = true }) -- find string under cursor in current working directory
keymap.set('n', '<leader>sb', '<cmd>Telescope buffers<cr>', { silent = true }) -- list open buffers in current neovim instance
keymap.set('n', '<leader>sh', '<cmd>Telescope help_tags<cr>', { silent = true }) -- list available help tags
keymap.set('n', '<leader>sk', '<cmd>Telescope keymaps<cr>', { silent = true }) -- list available help tags
-- git merge
keymap.set('n', '<leader>1', ':diffget LOCAL<CR>')
keymap.set('n', '<leader>2', ':diffget REMOTE<CR>')
-- git diff
keymap.set('n', '<leader>gh', ':DiffviewFileHistory %<CR>', { silent = true })
-- toggleterm
keymap.set('n', '<M-1>', '<cmd>ToggleTerm direction=horizontal<cr>', { silent = true })
-- vim-sneak
-- keymap.set('n', 'f', '<Plug>Sneak_s', { silent = true })
-- keymap.set('n', 'F', '<Plug>Sneak_S', { silent = true })
-- keymap.set('n', 's', 's', { silent = true })
-- easymotion
keymap.set('n', '<leader>f', '<Plug>(easymotion-prefix)', { silent = true })
keymap.set('n', '<leader>fs', '<Plug>(easymotion-sn)', { silent = true })
keymap.set('n', '<leader>w', '<Plug>(easymotion-overwin-f2)', { silent = true })
vim.g.EasyMotion_smartcase = 1
-- Telescope history
keymap.set('n', '<leader>fh', '<cmd>Telescope file_history history<CR>', { 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 <leader>v to the custom function
keymap.set('n', '<leader>v', [[:lua move_to_vertical_split()<CR>]], { noremap = true, silent = true })
-- load the session for the current directory
keymap.set("n", "<leader>qs", function() require("persistence").load() end)
-- select a session to load
keymap.set("n", "<leader>qS", function() require("persistence").select() end)
-- load the last session
keymap.set("n", "<leader>ql", function() require("persistence").load({ last = true }) end)
-- stop Persistence => session won't be saved on exit
keymap.set("n", "<leader>qd", function() require("persistence").stop() end)