vim.g.mapleader = " " vim.g.maplocalleader = ";" local set = vim.keymap.set -- splits & navigation set("n", "s", "", { desc = "window prefix" }) set("n", "ss", ":spw", { desc = "split horizontal" }) set("n", "sv", ":vsw", { desc = "split vertical" }) set("n", "sw", "w", { desc = "navigate splits" }) set("n", "sh", "h", { desc = "focus left split" }) set("n", "sj", "j", { desc = "focus below split" }) set("n", "sk", "k", { desc = "focus above split" }) set("n", "sl", "l", { desc = "focus right split" }) set("n", "sH", "8<", { desc = "shrink split left" }) set("n", "sJ", "8-", { desc = "shrink split down" }) set("n", "sK", "8+", { desc = "grow split up" }) set("n", "sL", "8>", { desc = "grow split right" }) set("n", "s=", "=", { desc = "equalize splits" }) -- open set("n", "sb", ":Lex", { desc = "file tree" }) set("n", "", ":noh", { desc = "clear highlights" }) set("n", "t", ":term", { desc = "open terminal" }) -- remaps set("i", "jj", "", { nowait = true, desc = "exit insert mode" }) set("n", "", "") set("n", "", "") set("n", "", "") set("n", "", "") set("i", "", "") set("i", "", "") set("i", "", "") set("i", "", "") -- search set("n", "", ":noh", { desc = "clear search highlight" }) -- line numbers set("n", "n", ":set nu! rnu!", { desc = "toggle line numbers" }) -- vim configuration set("n", "ec", ":vs $MYVIMRC", { desc = "edit vimrc" }) set("n", "so", ":so %", { desc = "source current file" }) set("n", "cx", "!chmod +x %", { silent = true, desc = "run `chmod +x` on current file" }) set("n", "yp", "let @+ = expand('%r'):p", { silent = true, desc = "yank path" }) -- remap native NeoVim comment keymaps set({ "n", "x" }, "c", "gc", { remap = true, desc = "toggle comment" }) set("n", "cc", "gcc", { remap = true, desc = "toggle comment line" }) set("o", "c", "gc", { remap = true, desc = "comment textobject" }) -- move lines set("v", "K", ": '<,'>move '<-2gv", { desc = "move selection up" }) set("v", "J", ": '<,'>move '>+1gv", { desc = "move selection down" })