local opts = { noremap = true, silent = true } -- Keymaps -- Paste over selection vim.keymap.set('v', 'p', '"_dP', opts) -- Y copy from cursor to end of line vim.keymap.set('n', 'Y', 'y$', opts) -- Keep cursor centered when scrolling search matches vim.keymap.set('n', 'n', 'nzzzv', opts) vim.keymap.set('n', 'N', 'Nzzzv', opts) vim.keymap.set('n', 'J', 'mzJ`z', opts) -- Undo breakpoints vim.keymap.set('i', ',', ',u', opts) vim.keymap.set('i', '.', '.u', opts) vim.keymap.set('i', '!', '!u', opts) vim.keymap.set('i', '?', '?u', opts) -- Jumplist mutations vim.keymap.set('n', ' k', '(v:count > 5 ? "m\'" . v:count : "") . \'k\'', opts) vim.keymap.set('n', ' j', '(v:count > 5 ? "m\'" . v:count : "") . \'j\'', opts) -- Moving text vim.keymap.set('v', 'J', ':m \'>+1gv=gv', opts) vim.keymap.set('v', 'K', ':m \'>-2gv=gv', opts) vim.keymap.set('n', 'j', ':m .+1==', opts) vim.keymap.set('n', 'k', ':m .-2==', opts) vim.keymap.set('n', 'ft', ':Format', opts) -- GIT -- Fugitive git bindings vim.keymap.set('n', 'ga', ':Git add %:p', opts) vim.keymap.set('n', 'gs', ':Git', opts) vim.keymap.set('n', 'gc', ':Git commit -v -q', opts) vim.keymap.set('n', 'gt', ':Git commit -v -q %:p', opts) vim.keymap.set('n', 'd', ':Gdiff', opts) vim.keymap.set('n', 'dm', ':Gdiffsplit!', opts) vim.keymap.set('n', 'ge', ':Gedit', opts) vim.keymap.set('n', 'gr', ':Gread', opts) vim.keymap.set('n', 'gw', ':Gwrite', opts) vim.keymap.set('n', 'gl', ':silent! Glog:bot copen', opts) vim.keymap.set('n', 'gp', ':Ggrep', opts) vim.keymap.set('n', 'gm', ':Gmove', opts) vim.keymap.set('n', 'gb', ':Git branch', opts) vim.keymap.set('n', 'go', ':Git checkout', opts) vim.keymap.set('n', 'gps', ':Git push', opts) vim.keymap.set('n', 'gpl', ':Dispatch! git pull', opts) -- Interactive merge conflict SPAVE-mv to trigger from git status menu vim.keymap.set('n', 'gj', ':diffget //3', opts) vim.keymap.set('n', 'gf', ':diffget //2', opts) -- TELESCOPE vim.keymap.set('n', 'rg', require('telescope.builtin').live_grep, opts) vim.keymap.set('n', 'pw', require('telescope.builtin').grep_string, opts) vim.keymap.set('n', 'pf', require('telescope.builtin').find_files, opts) vim.keymap.set('n', 'pg', require('telescope.builtin').git_files, opts) vim.keymap.set('n', 'pb', require('telescope.builtin').buffers, opts) vim.keymap.set('n', 'm', require('telescope.builtin').man_pages, opts) vim.keymap.set('n', 'pc', require('telescope.builtin').current_buffer_fuzzy_find, opts) vim.keymap.set('n', 'tg', require('telescope.builtin').live_grep, opts) vim.keymap.set('n', 'gl', require('telescope.builtin').git_bcommits, opts) vim.keymap.set('n', 'gk', require('telescope.builtin').git_commits, opts) -- kenesis vim.keymap.set('n', 'th', require('telescope.builtin').grep_string, opts) vim.keymap.set('n', 'tj', require('telescope.builtin').find_files, opts) vim.keymap.set('n', 'tk', require('telescope.builtin').git_files, opts) vim.keymap.set('n', 'tm', require('telescope.builtin').buffers, opts) vim.keymap.set('n', 't;', require('telescope.builtin').help_tags, opts) vim.keymap.set('n', 'tl', require('telescope.builtin').current_buffer_fuzzy_find, opts) -- for debugger -- vim.keymap.set('n', 'tp', ':Telescope dap list_breakpoints', opts) -- vim.keymap.set('n', 'tc', ':Telescope dap commands', opts) -- Harpoon vim.keymap.set('n', 'ha', 'lua require("harpoon.mark").add_file()', opts) vim.keymap.set('n', 'hj', 'lua require("harpoon.ui").toggle_quick_menu()', opts) vim.keymap.set('n', 'hn', 'lua require("harpoon.ui").nav_next()', opts) vim.keymap.set('n', 'hp', 'lua require("harpoon.ui").nav_prev()', opts) vim.keymap.set('n', 'h1', 'lua require("harpoon.ui").nav_file(1)', opts) vim.keymap.set('n', 'h2', 'lua require("harpoon.ui").nav_file(2)', opts) vim.keymap.set('n', 'h3', 'lua require("harpoon.ui").nav_file(3)', opts) vim.keymap.set('n', 'h4', 'lua require("harpoon.ui").nav_file(4)', opts) vim.keymap.set('n', 'sn', ':PackerSync', opts) -- DEBUG vim.keymap.set('n', '', 'lua require("dap").continue()', opts) vim.keymap.set('n', '', 'lua require("dap").step_over()', opts) vim.keymap.set('n', '', 'lua require("dap").step_into()', opts) vim.keymap.set('n', '', 'lua require("dap").step_out()', opts) vim.keymap.set('n', 'b', 'lua require("dap").toggle_breakpoint()', opts) vim.keymap.set('n', 'B', 'lua require("dap").set_breakpoint(vim.fn.input("Breakpoint condition: "))', opts) vim.keymap.set('n', 'lp', 'lua require("dap").set_breakpoint(nil, nil, vim.fn.input("Log point message: "))', opts) vim.keymap.set('n', 'dr', 'lua require("dap").repl.open()', opts) vim.keymap.set('n', 'dl', 'lua require("dap").run_last()', opts) vim.keymap.set('n', 'dc', 'lua require("dapui").close()', opts) --unbinds -- vim.keymap.set('n', 'b', '', opts)