-- 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" }) -- Gitsigns to toggle hunk preview and git line blame vim.keymap.set("n", "gp", ":Gitsigns preview_hunk", { desc = "Preview changes made on the current line" }) vim.keymap.set("n", "gt", ":Gitsigns toggle_current_line_blame", { desc = "View current line blame" }) -- Start resize mode vim.keymap.set( "n", "z", ":lua EnterResizeMode()", { desc = "Enter Resi[z]e Mode", noremap = true, silent = true } ) -- Define the resize mode function function EnterResizeMode() print("Resize mode: press 'h' or 'l' to resize, 'q' to quit") vim.keymap.set("n", "h", ":vertical resize +5", { noremap = true, silent = true }) vim.keymap.set("n", "l", ":vertical resize -5", { noremap = true, silent = true }) vim.keymap.set("n", "j", ":horizontal resize +5", { noremap = true, silent = true }) vim.keymap.set("n", "k", ":horizontal resize -5", { noremap = true, silent = true }) vim.keymap.set("n", "q", ":lua ExitResizeMode()", { noremap = true, silent = true }) end -- Define the exit resize mode function function ExitResizeMode() vim.api.nvim_del_keymap("n", "h") vim.api.nvim_del_keymap("n", "l") vim.api.nvim_del_keymap("n", "j") vim.api.nvim_del_keymap("n", "k") vim.api.nvim_del_keymap("n", "q") print("Exited Resize Mode") end