-- 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" }) -- 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 = "Resi[z]e Mode", noremap = true, silent = true } ) -- Define the resize mode function function EnterResizeMode() print("Resize mode: press 'h' or 'l' for vertical resize and 'j' or 'k' for horizontal 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 -- Noice vim.keymap.set("n", "nd", "NoiceDismiss", { desc = "Dismiss Noice Message" }) vim.keymap.set("n", "ndb", "NoiceDisable", { desc = "Dismiss Noice Message" }) vim.keymap.set("n", "ne", "NoiceEnable", { desc = "Dismiss Noice Message" }) vim.keymap.set("n", "nl", "NoiceLast", { desc = "Dismiss Noice Message" }) vim.keymap.set("n", "nt", "NoiceTelescope", { desc = "Dismiss Noice Message" }) --[[ -- - `:Noice` or `:Noice history` shows the message history - `:Noice last` shows the last message in a popup - `:Noice dismiss` dismiss all visible messages - `:Noice errors` shows the error messages in a split. Last errors on top - `:Noice disable` disables **Noice** - `:Noice enable` enables **Noice** - `:Noice stats` shows debugging stats - `:Noice telescope` opens message history in Telescope Alternatively, all commands also exist as a full name like `:NoiceLast`, `:NoiceDisable`. You can also use `Lua` equivalents. >lua vim.keymap.set("n", "nl", function() require("noice").cmd("last") end) vim.keymap.set("n", "nh", function() require("noice").cmd("history") end) --]] -- Execute highlighted lua commands vim.keymap.set("v", "ex", ":lua", { desc = "[EX]ecute highlighted lua code" })