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.keymap.set('n', 'n', function() vim.o.hlsearch = not vim.o.hlsearch end, { desc = 'Toggle Search Highlight' }) 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', ']q', 'lnextzz', { desc = 'Location List Next' }) vim.keymap.set('n', '[q', 'lprevzz', { desc = 'Location List Prev' }) -- 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 = 'Open Buf Horizontal Split' }) vim.keymap.set('n', 'bv', 'vsp', { desc = 'Open Buf Vertical Split' }) -- 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 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 -- Wezterm multiplexer (not tmux) vim.keymap.set('n', '', 'silent !wezterm cli spawn --cwd %:p:h', { desc = 'Open Wezterm Tab in Current Dir' }) vim.keymap.set('n', 'fx', '!chmod +x %', { desc = 'Set Current File to Executable', silent = true }) -- Telescope Keymaps -- See `:help telescope.builtin` local builtin = require('telescope.builtin') vim.keymap.set('n', '?', builtin.oldfiles, { desc = '[?] Find recently opened files' }) vim.keymap.set('n', '', builtin.buffers, { desc = '[ ] Find existing buffers' }) vim.keymap.set('n', '/', function() 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', builtin.git_files, { desc = 'Search [G]it [F]iles' }) vim.keymap.set('n', 'gb', builtin.git_branches, { desc = 'Search [G]it [B]ranches' }) vim.keymap.set('n', 'gc', builtin.git_commits, { desc = 'Search [G]it [C]ommits' }) vim.keymap.set('n', 'sf', builtin.find_files, { desc = '[S]earch [F]iles' }) vim.keymap.set({ 'n', 'v' }, 'sh', function() local query = utils.get_search_query() 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() builtin.grep_string({ search = query, initial_mode = 'insert', default_text = query }) end, { desc = '[S]earch current [W]ord' }) vim.keymap.set('n', 'sp', function() builtin.grep_string({ search = vim.fn.input('Grep Search > ') }) end, { desc = '[S]earch [P]roject' }) vim.keymap.set('n', 'sG', 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', builtin.diagnostics, { desc = '[S]earch [D]iagnostics' }) vim.keymap.set('n', 'sr', builtin.resume, { desc = '[S]earch [R]esume' }) -- Telescope config files vim.keymap.set('n', 'fc', function() builtin.find_files({ cwd = vim.fn.stdpath('config'), find_command = { 'fd', '--type', 'f', '--exclude', 'README.md', '--exclude', 'LICENSE.md', '--exclude', 'init.lua', }, }) end, { desc = '[F]ind [C]onfig Files' }) vim.keymap.set('n', 'fp', function() builtin.find_files({ cwd = vim.fs.joinpath(vim.fn.stdpath('data'), 'lazy'), }) end, { desc = '[F]ind [P]lugin Files' })