-- [[ Basic Keymaps ]] vim.keymap.set('n', '', 'nohlsearch') vim.keymap.set('n', 'q', vim.diagnostic.setloclist, { desc = 'Open diagnostic [Q]uickfix list' }) vim.keymap.set('t', '', '', { desc = 'Exit terminal mode' }) vim.keymap.set('n', '', '', { desc = 'Move focus to the left window' }) vim.keymap.set('n', '', '', { desc = 'Move focus to the right window' }) vim.keymap.set('n', '', '', { desc = 'Move focus to the lower window' }) vim.keymap.set('n', '', '', { desc = 'Move focus to the upper window' }) vim.keymap.set('n', '', function() local wins = vim.tbl_filter(function(win) return vim.api.nvim_win_get_config(win).relative == '' end, vim.api.nvim_tabpage_list_wins(0)) if #wins > 1 then vim.cmd('close') else local buffers = vim.tbl_filter(function(buf) return vim.api.nvim_buf_is_valid(buf) and vim.bo[buf].buflisted end, vim.api.nvim_list_bufs()) if #buffers > 1 then vim.cmd('bdelete') else vim.cmd('q') end end end, { desc = 'Close split, buffer, or exit' }) vim.keymap.set('n', '', 'vsplit', { desc = 'Vertical split' }) vim.keymap.set('n', '', 'split', { desc = 'Horizontal split' }) vim.keymap.set('n', 'po', 'only', { desc = 'Only pane' }) vim.keymap.set('n', 'tn', 'tabnew', { desc = 'New tab' }) vim.keymap.set('n', 'tq', 'tabclose', { desc = 'Close tab' }) vim.keymap.set('n', 'to', 'tabonly', { desc = 'Only tab' }) vim.keymap.set('n', 'th', 'tabprevious', { desc = 'Previous tab' }) vim.keymap.set('n', 'tl', 'tabnext', { desc = 'Next tab' })