100 lines
4.2 KiB
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)
|