39 lines
1.7 KiB
Lua
39 lines
1.7 KiB
Lua
-- [[ Basic Keymaps ]]
|
|
|
|
vim.keymap.set('n', '<Esc>', '<cmd>nohlsearch<CR>')
|
|
vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagnostic [Q]uickfix list' })
|
|
vim.keymap.set('t', '<Esc><Esc>', '<C-\\><C-n>', { desc = 'Exit terminal mode' })
|
|
|
|
vim.keymap.set('n', '<C-h>', '<C-w><C-h>', { desc = 'Move focus to the left window' })
|
|
vim.keymap.set('n', '<C-l>', '<C-w><C-l>', { desc = 'Move focus to the right window' })
|
|
vim.keymap.set('n', '<C-j>', '<C-w><C-j>', { desc = 'Move focus to the lower window' })
|
|
vim.keymap.set('n', '<C-k>', '<C-w><C-k>', { desc = 'Move focus to the upper window' })
|
|
vim.keymap.set('n', '<C-q>', 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', '<C-\\>', '<cmd>vsplit<CR>', { desc = 'Vertical split' })
|
|
vim.keymap.set('n', '<C-S-\\>', '<cmd>split<CR>', { desc = 'Horizontal split' })
|
|
vim.keymap.set('n', '<leader>po', '<cmd>only<CR>', { desc = 'Only pane' })
|
|
|
|
vim.keymap.set('n', '<leader>tn', '<cmd>tabnew<CR>', { desc = 'New tab' })
|
|
vim.keymap.set('n', '<leader>tq', '<cmd>tabclose<CR>', { desc = 'Close tab' })
|
|
vim.keymap.set('n', '<leader>to', '<cmd>tabonly<CR>', { desc = 'Only tab' })
|
|
vim.keymap.set('n', '<leader>th', '<cmd>tabprevious<CR>', { desc = 'Previous tab' })
|
|
vim.keymap.set('n', '<leader>tl', '<cmd>tabnext<CR>', { desc = 'Next tab' })
|