-- [[ 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" }) -- 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'", { -- Unmap the 'gp' key for previous word 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', 'J', "mzj`z") vim.keymap.set('n', '', "zz", { desc = "Half Page Jumping Up" }) vim.keymap.set('n', '', "zz", { desc = "Half Page Jumping Down" }) -- Keep search line in the middle vim.keymap.set('n', 'n', 'nzzzv', { silent = true }) vim.keymap.set('n', 'N', 'Nzzzv', { silent = true }) -- Unmap the 'p' key for previous word vim.api.nvim_set_keymap('n', 'gp', '', { noremap = true, silent = true }) -- Quick fix navigation 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" }) -- Copy from plus register vim.keymap.set({ 'n', 'v' }, 'y', "\"+y", { desc = "Copy to + register" }) vim.keymap.set('n', 'Y', "\"+Y") -- Replace current word vim.keymap.set("n", "r", [[:%s/\<\>//gI]], { desc = "[R]eplace Current Word" }) 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() -- You can pass additional configuration to telescope to change theme, layout, etc. require('telescope.builtin').current_buffer_fuzzy_find(require('telescope.themes').get_dropdown { winblend = 10, previewer = false, }) -- require('telescope.builtin').current_buffer_fuzzy_find(require('telescope.themes')) 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', 'sf', require('telescope.builtin').find_files, { desc = '[S]earch [F]iles' }) vim.keymap.set('n', 'sh', require('telescope.builtin').help_tags, { desc = '[S]earch [H]elp' }) vim.keymap.set('n', 'sw', require('telescope.builtin').grep_string, { 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]search [P]roject' }) vim.keymap.set('n', 'sg', require('telescope.builtin').live_grep, { desc = '[S]earch by [G]rep' }) 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]resume' }) -- [ 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', 'e', vim.diagnostic.open_float, { desc = 'Open floating diagnostic message' }) -- Open the diagnostics location list vim.keymap.set('n', 'q', function() vim.diagnostic.setloclist() vim.cmd('lopen') end, { noremap = true, silent = true, expr = false, desc = 'Open the diagnostics location list' }) -- Close the diagnostics location list vim.keymap.set('n', 'qq', function() vim.cmd('lclose') end, { noremap = true, silent = true, expr = false, desc = 'Close the diagnostics location list' }) -- [[ Highlight on yank ]] -- See `:help vim.highlight.on_yank()` local highlight_group = vim.api.nvim_create_augroup('YankHighlight', { clear = true }) vim.api.nvim_create_autocmd('TextYankPost', { callback = function() vim.highlight.on_yank() end, group = highlight_group, pattern = '*', })