-- [[ Basic Keymaps ]] -- See `:help vim.keymap.set()` -- Clear search highlights with Escape in normal mode vim.keymap.set('n', '', 'nohlsearch') -- Diagnostic keymaps vim.keymap.set('n', 'q', vim.diagnostic.setloclist, { desc = 'Open diagnostic [Q]uickfix list' }) -- Exit terminal mode with double Escape vim.keymap.set('t', '', '', { desc = 'Exit terminal mode' }) -- NOTE: Window navigation is handled by nvim-tmux-navigator plugin -- which provides seamless navigation between vim splits and tmux panes -- LSP reload function local function reload_lsp() local clients = vim.lsp.get_clients() if #clients == 0 then print('No LSP clients running') return end for _, client in ipairs(clients) do vim.lsp.stop_client(client.id) end vim.defer_fn(function() vim.cmd('LspStart') print('LSP servers reloaded') end, 500) end -- Reload LSP keybind vim.keymap.set('n', 'lr', reload_lsp, { desc = '[L]SP [R]eload all servers' }) -- Buffer management keymaps vim.keymap.set('n', 'bb', 'Telescope buffers', { desc = '[B]rowse [B]uffers' }) vim.keymap.set('n', '[b', 'bprevious', { desc = 'Previous buffer' }) vim.keymap.set('n', ']b', 'bnext', { desc = 'Next buffer' }) vim.keymap.set('n', 'bd', 'bdelete', { desc = '[B]uffer [D]elete' }) vim.keymap.set('n', 'ba', '%bd|e#', { desc = '[B]uffers close [A]ll but current' }) vim.keymap.set('n', 'bn', 'enew', { desc = '[B]uffer [N]ew' }) -- Quick buffer switching with numbers for i = 1, 9 do vim.keymap.set('n', '' .. i, 'buffer ' .. i .. '', { desc = 'Switch to buffer ' .. i }) end -- Alternate file (toggle between two most recent files) vim.keymap.set('n', '', '', { desc = 'Toggle alternate file' }) -- Window management keymaps vim.keymap.set('n', 'ws', 'split', { desc = '[W]indow [S]plit horizontal' }) vim.keymap.set('n', 'wv', 'vsplit', { desc = '[W]indow [V]ertical split' }) vim.keymap.set('n', 'wc', 'close', { desc = '[W]indow [C]lose' }) vim.keymap.set('n', 'wo', 'only', { desc = '[W]indow [O]nly (close others)' }) vim.keymap.set('n', 'ww', 'w', { desc = '[W]indow cycle' }) vim.keymap.set('n', 'w=', '=', { desc = '[W]indow balance sizes' }) -- Window resizing with arrow keys vim.keymap.set('n', '', 'resize +2', { desc = 'Increase window height' }) vim.keymap.set('n', '', 'resize -2', { desc = 'Decrease window height' }) vim.keymap.set('n', '', 'vertical resize -2', { desc = 'Decrease window width' }) vim.keymap.set('n', '', 'vertical resize +2', { desc = 'Increase window width' }) -- Standard practice for Lua modules that don't need to return complex data return {}