-- Set as the leader key -- See `:help mapleader` -- NOTE: Must happen before plugins are loaded (otherwise wrong leader will be used) vim.g.mapleader = ' ' vim.g.maplocalleader = ' ' -- [[ Basic Keymaps ]] -- See `:help vim.keymap.set()` -- Clear highlights on search when pressing in normal mode -- See `:help hlsearch` vim.keymap.set('n', '', 'nohlsearch') -- Delete entire word with Alt+Backspace vim.keymap.set('i', '', '') -- Diagnostic keymaps vim.keymap.set('n', '[d', vim.diagnostic.goto_next, { desc = 'Go to next [D]iagnostic message' }) vim.keymap.set('n', ']d', vim.diagnostic.goto_prev, { desc = 'Go to previous [D]iagnostic message' }) vim.keymap.set('n', 'e', vim.diagnostic.open_float, { desc = 'Show diagnostic [E]rror message' }) vim.keymap.set('n', 'q', vim.diagnostic.setloclist, { desc = 'Open diagnostic [Q]uickfix list' }) -- Exit terminal mode in the builtin terminal with a shortcut that is a bit easier -- for people to discover. Otherwise, you normally need to press , which -- is not what someone will guess without a bit more experience. -- -- NOTE: This won't work in all terminal emulators/tmux/etc. Try your own mapping -- or just use to exit terminal mode vim.keymap.set('t', '', '', { desc = 'Exit terminal mode' }) -- TIP: Disable arrow keys in normal mode vim.keymap.set('n', '', 'echo "Use h to move!!"') vim.keymap.set('n', '', 'echo "Use l to move!!"') vim.keymap.set('n', '', 'echo "Use k to move!!"') vim.keymap.set('n', '', 'echo "Use j to move!!"') -- Keybinds to make split navigation easier. -- Use CTRL+ to switch between windowsC -- -- See `:help wincmd` for a list of all window commands 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' }) -- Window management vim.keymap.set('n', 'sv', 'v', { desc = '[S]plit window [V]ertically' }) vim.keymap.set('n', 'sh', 's', { desc = '[S]plit window [H]orizontally' }) vim.keymap.set('n', 'se', '=', { desc = 'Make [S]plit [E]qual size' }) vim.keymap.set('n', 'sx', 'close', { desc = 'Current [S]plit [X]Close' }) -- Tab management vim.keymap.set('n', 'to', 'tabnew', { desc = 'Open new tab' }) -- open new tab vim.keymap.set('n', 'tx', 'tabclose', { desc = 'Close current tab' }) -- close current tab vim.keymap.set('n', 'tn', 'tabn', { desc = 'Go to next tab' }) -- go to next tab vim.keymap.set('n', 'tp', 'tabp', { desc = 'Go to previous tab' }) -- go to previous tab vim.keymap.set('n', 'tf', 'tabnew %', { desc = 'Open current buffer in new tab' }) -- move current buffer to new tab -- Gopher plugin keymaps vim.keymap.set('n', 'if', ' GoIfErr ', { desc = 'Add if err != nil snippet' }) -- Borrowed from my VS Code settings for better Vim navigations vim.keymap.set('n', 'l', '$', { desc = 'Move to end of the line with leader + l' }) vim.keymap.set('n', 'h', '_', { desc = 'Move to first character of the line with leader + h' })