-- ╭─────────────────────────────────────────────────────────╮ -- │ Keymaps │ -- ╰─────────────────────────────────────────────────────────╯ -- Create keymap function local mapkey = function(mode, key, desc, action, plugin) local keymapper = plugin and require("lz.n").keymap(plugin).set or vim.keymap.set keymapper(mode, key, action, { noremap = true, silent = true, desc = desc }) end -- Set the leader key vim.g.mapleader = " " -- Pickers mapkey("n", "f", "Open file picker", ":Pick files", "mini.pick") mapkey("n", "o", "Open old file picker", ":Pick oldfiles", "mini.pick") mapkey("n", "/", "Open live grep picker", ":Pick grep_live", "mini.pick") mapkey("n", "k", "Open colorscheme picker", ":Pick colorschemes", "mini.pick") mapkey("n", ":", "Open command history picker", ":Pick history", "mini.pick") mapkey("n", "z", "Open zoxide picker", ":Pick zoxide", "mini.pick") mapkey("n", "L", "Open cd picker", ":Pick cd", "mini.pick") mapkey("n", "l", "Open tab cd picker", ":Pick cd scope='tab'", "mini.pick") -- File manager mapkey("n", "e", "Open file manager", ":lua MiniFiles.open()", "mini.files") mapkey("n", "E", "Open file manager at current file", ":lua MiniFiles.open(vim.api.nvim_buf_get_name(0))", "mini.files") -- Git mapkey("n", "g", "Manage git", "") mapkey("n", "ga", "Git add", ":Git add %:p", "mini-git") mapkey("n", "gA", "Git add cwd", function() vim.cmd("Git add " .. vim.fn.getcwd() .. "/.") end, "mini-git") mapkey("n", "gr", "Git remove", ":Git rm %:p", "mini-git") mapkey("n", "gc", "Git commit", ":Git commit", "mini-git") mapkey("n", "gC", "Browse git commits", ":Pick git_commits", "mini.pick") mapkey("n", "gb", "Browse git branches", ":Pick git_branches", "mini.pick") mapkey("n", "gg", "Git UI", ":Fugit2", "fugit2.nvim") mapkey("n", "gp", "Git pull", ":Git pull", "mini-git") mapkey("n", "gP", "Git push", ":Git push", "mini-git") -- Tabs mapkey("n", "t", "Manage tabs", "") mapkey("n", "tt", "Go to next tab", ":tabn") mapkey("n", "tT", "Go to previous tab", ":tabp") mapkey("n", "to", "Open new tab", ":tabnew") mapkey("n", "tc", "Close current tab", ":tabclose") -- Buffers mapkey("n", "b", "Manage buffers", "") mapkey("n", "bb", "Open buffer picker", ":Pick buffers", "mini.pick") mapkey("n", "bc", "Clear invisible buffers", function () local bufinfos = vim.fn.getbufinfo({buflisted = 1}) vim.tbl_map(function (bufinfo) if bufinfo.changed == 0 and (not bufinfo.windows or #bufinfo.windows == 0) then vim.api.nvim_buf_delete(bufinfo.bufnr, {force = false, unload = false}) vim.cmd.redrawtabline() end end, bufinfos) end) -- Comment box mapkey({"n", "v"}, "j", "Manage comment graphics", "") mapkey({"n", "v"}, "jd", "Remove comment graphics", ":CBd") mapkey({"n", "v"}, "jb", "Create simple comment box", ":CBccbox") mapkey({"n", "v"}, "jh", "Create heavy comment box", ":CBccbox3") mapkey({"n", "v"}, "jq", "Create quote comment box", ":CBccbox12") mapkey({"n", "v"}, "jl", "Create simple comment line", ":CBccline") -- Session mapkey("n", "w", "Manage sessions", "") mapkey("n", "ww", "Search sessions", ":AutoSession search", "mini.pick") mapkey("n", "wd", "Delete a session", ":AutoSession deletePicker", "mini.pick") mapkey("n", "ws", "Save current session", ":AutoSession save") mapkey("n", "wr", "Open last session", ":AutoSession restore") mapkey("n", "wp", "Purge orphaned sessions", ":AutoSession purgeOrphaned") mapkey("n", "wl", "Leave current session", function() vim.cmd("wa") vim.cmd("AutoSession save") vim.cmd("new") vim.cmd([[.+,$bwipeout]]) vim.cmd("cd ~") end) -- Terminal mapkey("n", "n", "Open terminal", function() vim.cmd("botright split") vim.cmd("resize " .. math.floor(vim.o.lines / 3)) vim.cmd("terminal") vim.cmd("startinsert") end) -- Toggle spellcheck mapkey("n", "zq", "Toggle spellcheck", ":set spell!") -- Spelling suggestions mapkey("n", "z=", "Pick spelling suggestions", ":Pick spellsuggest") -- Do operations without yanking mapkey({ "n", "v" }, "d", "Fully delete", [["_d]]) mapkey({ "n", "v" }, "D", "Fully delete line", [["_D]]) mapkey({ "n", "v" }, "x", "Fully delete character", [["_x]]) mapkey({ "n", "v" }, "X", "Fully delete previous character", [["_X]]) mapkey({ "n", "v" }, "c", "Fully change", [["_c]]) mapkey({ "n", "v" }, "C", "Fully change line", [["_C]]) mapkey({ "v" }, "p", "Fully put", [[P]]) -- Paste on newline mapkey("n", "p", "Paste on newline", ":pu") -- Visual Movement Keys mapkey({ "n", "v" }, "j", "Go down visually", "gj") mapkey({ "n", "v" }, "k", "Go up visually", "gk") mapkey({ "n", "v" }, "", "Go down visually", "g") mapkey({ "n", "v" }, "", "Go up visually", "g") -- QOL Keys mapkey("t", "", "Exit terminal insert mode", "") mapkey("n", "", "Clear highlights", ":noh") -- Make esc clear highlights