local utils = require('config.utils') -- Basic Keymaps -- Keymaps for better default experience -- See `:help vim.keymap.set()` vim.keymap.set({ 'n', 'v' }, '', '', { silent = true }) -- vim.keymap.set('n', 'pv', vim.cmd.Ex, { desc = "[P]roject [V]iew" }) vim.keymap.set('n', '', '', { silent = true }) vim.keymap.set('n', '', 'nohlsearch', { silent = true }) -- Remap for dealing with word wrap vim.keymap.set('n', 'k', "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true }) vim.keymap.set('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true }) -- Move lines vim.keymap.set('v', 'J', ":m '>+1gv=gv", { silent = true }) vim.keymap.set('v', 'K', ":m '<-2gv=gv", { silent = true }) vim.keymap.set('n', '>', '>gv', { silent = true }) vim.keymap.set('n', '<', '', 'zz', { desc = 'Half Page Jumping Up' }) vim.keymap.set('n', '', 'zz', { desc = 'Half Page Jumping Down' }) vim.keymap.set('n', 'n', 'nzzzv', { noremap = true, silent = true }) vim.keymap.set('n', 'N', 'Nzzzv', { noremap = true, silent = true }) vim.api.nvim_set_keymap('n', 'gp', '', { noremap = true, silent = true }) vim.keymap.set('n', '', 'cnextzz') vim.keymap.set('n', '', 'cprevzz') vim.keymap.set('n', 'k', 'lnextzz', { desc = 'Quick Fix Nav Up' }) vim.keymap.set('n', 'j', 'lprevzz', { desc = 'Quick Fix Nav Down' }) -- Buffer Navigation Keymaps vim.keymap.set('n', 'bn', 'bnextzz', { desc = 'Quick Nav Buf Next' }) vim.keymap.set('n', 'bp', 'bprevzz', { desc = 'Quick Nav Buf Prev' }) vim.keymap.set('n', 'bd', 'bdelete', { desc = 'Quick Nav Buf Delete' }) vim.keymap.set('n', 'bs', 'split', { desc = 'Openn Buf Horizontal Split' }) vim.keymap.set('n', 'bv', 'vsp', { desc = 'Open Buf Vertical Split' }) vim.keymap.set('n', 'bt', 'terminal') -- -- open terminal for R and Python -- vim.keymap.set('n', 'bR', 'terminal R', { desc = 'Open R Terminal' }) -- vim.keymap.set('n', 'bP', 'terminal python', { desc = 'Open Python Terminal' }) -- Editing Keymaps vim.keymap.set('x', 'p', [["_dP"]], { desc = 'Paste without register' }) vim.keymap.set({ 'n', 'v' }, 'd', [["_d"]], { desc = 'Delete without register' }) vim.keymap.set({ 'n', 'v' }, 'y', '"+y', { desc = 'Copy to + register' }) vim.keymap.set('n', 'Y', '"+Y') -- replace current word in current scope vim.keymap.set( 'n', 'rw', ':%s/\\<\\>//gI', { desc = '[R]eplace Current [W]ord in Current Scope' } ) -- replace current word in file scope vim.keymap.set( 'n', 'rW', ':%s/\\<\\>//gI', { desc = '[R]eplace Current [W]ord in File Scope' } ) -- Open vertical split pane -- File Management Keymaps vim.keymap.set('n', '', 'silent !tmux neww $HOME/.local/bin/tmux_sessionizer', { desc = 'Open Session' }) vim.keymap.set('n', 'x', '!chmod +x %', { desc = 'Set Current File to Executable', silent = true }) -- Telescope Keymaps -- See `:help telescope.builtin` vim.keymap.set('n', '?', require('telescope.builtin').oldfiles, { desc = '[?] Find recently opened files' }) vim.keymap.set('n', '', require('telescope.builtin').buffers, { desc = '[ ] Find existing buffers' }) vim.keymap.set('n', '/', function() require('telescope.builtin').current_buffer_fuzzy_find( require('telescope.themes').get_dropdown({ winblend = 10, previewer = false }) ) end, { desc = '[/] Fuzzily search in current buffer' }) vim.keymap.set('n', 'gf', require('telescope.builtin').git_files, { desc = 'Search [G]it [F]iles' }) vim.keymap.set('n', 'gb', require('telescope.builtin').git_branches, { desc = 'Search [G]it [B]ranches' }) vim.keymap.set('n', 'gc', require('telescope.builtin').git_commits, { desc = 'Search [G]it [C]ommits' }) vim.keymap.set('n', 'sf', require('telescope.builtin').find_files, { desc = '[S]earch [F]iles' }) vim.keymap.set({ 'n', 'v' }, 'sh', function() local query = utils.get_search_query() require('telescope.builtin').help_tags({ search = query, initial_mode = 'insert', default_text = query }) end, { desc = '[S]earch [H]elp' }) vim.keymap.set({ 'n', 'v' }, 'sw', function() local query = utils.get_search_query() require('telescope.builtin').grep_string({ search = query, initial_mode = 'insert', default_text = query }) end, { desc = '[S]earch current [W]ord' }) vim.keymap.set('n', 'sp', function() require('telescope.builtin').grep_string({ search = vim.fn.input('Grep Search > ') }) end, { desc = '[S]earch [P]roject' }) vim.keymap.set('n', 'sG', require('telescope.builtin').live_grep, { desc = '[S]earch by [G]rep' }) vim.keymap.set('n', 'sg', ':LiveGrepGitRoot', { desc = '[S]earch by [G]rep on Git Root' }) vim.keymap.set('n', 'sd', require('telescope.builtin').diagnostics, { desc = '[S]earch [D]iagnostics' }) vim.keymap.set('n', 'sr', require('telescope.builtin').resume, { desc = '[S]earch [R]esume' }) -- Tree-sitter Keymaps -- Diagnostic keymaps vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to previous diagnostic message' }) vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next diagnostic message' }) -- vim.keymap.set('n', 'ef', vim.diagnostic.open_float, { desc = 'Open floating diagnostic message' }) -- vim.keymap.set('n', 'ee', function() -- vim.diagnostic.setloclist() -- vim.cmd('lopen') -- end, { desc = 'Open the diagnostics location list' }) -- local runner = require("quarto.runner") -- vim.keymap.set('n', 'qrc', runner.run_cell, { desc = '[R]un [C]ell', silent = true }) -- vim.keymap.set('n', 'qra', runner.run_above, { desc = '[R]un cell and [A]bove', silent = true }) -- vim.keymap.set('n', "qrA", runner.run_all, { desc = "run all cells", silent = true }) -- vim.keymap.set('n', "qrl", runner.run_line, { desc = "run line", silent = true }) -- vim.keymap.set('v', 'qr', runner.run_range, { desc = "run visual range", silent = true }) -- vim.keymap.set('n', 'qRA', function() -- runner.run_all(true) -- end, { desc = "run all cells of all languages", silent = true }) -- Refactoring Keymaps -- vim.keymap.set({ "x" }, "re", [[lua require('refactoring').refactor('Extract Function')]], -- { noremap = true, silent = true, expr = false, desc = "Extract Function" }) -- vim.keymap.set({ "x" }, "rf", [[lua require('refactoring').refactor('Extract Function To File')]], -- { noremap = true, silent = true, expr = false, desc = "Extract Function To File" }) -- vim.keymap.set({ "x" }, "rv", [[lua require('refactoring').refactor('Extract Variable')]], -- { noremap = true, silent = true, expr = false, desc = "Extract Variable" }) -- vim.keymap.set({ "n" }, "rI", [[lua require('refactoring').refactor('Inline Variable')]], -- { noremap = true, silent = true, expr = false, desc = "Inline Variable" }) -- vim.keymap.set({ "n", "x" }, "ri", [[lua require('refactoring').refactor('Inline Variable')]], -- { noremap = true, silent = true, expr = false, desc = "Inline Variable" }) -- -- vim.keymap.set({ "n" }, "rb", [[lua require('refactoring').refactor('Extract Block')]], -- { noremap = true, silent = true, expr = false, desc = "Extract Block" }) -- vim.keymap.set({ "n" }, "rbf", [[lua require('refactoring').refactor('Extract Block To File')]], -- { noremap = true, silent = true, expr = false, desc = "Extract Block To File" })