-- LEADER -- Utilities Lmap("ul", "Lazy") Lmap("um", "Mason") Lmap("uL", "LspInfo") Lmap("uc", "CmpStatus") Lmap("un", "Netrw", vim.cmd.Ex) -- Toggle stuff local function toggle(o, a, b, p) return function() if vim.o[o] == a then vim.o[o] = b else vim.o[o] = a end if p then vim.cmd("set "..o.."?") end end end Lmap("tn", "Number", "set number!") Lmap("ts", "Spellcheck", "set spell!") Lmap("tl", "Cursorline", "set cursorline!") Lmap("tr", "Relative num", "set relativenumber!") -- Lmap("tw", "Wrap", "set wrap!set wrap?") Lmap("tw", "Wrap", toggle("wrap", true, false, 1)) Lmap("tb", "Statusline", toggle("ls", 0, 3)) Lmap("t:", "Cmd", toggle("ch", 0, 1)) Lmap("tc", "Column", toggle("cc", "80,100", "")) -- Clipboard stuff Lmap("p", "x", "Void paste", [["_dP]]) Lmap("p", "Clipboard paste", [["+p]]) Lmap("P", "Clipboard Paste", [["+P]]) Lmap("d", "nx", "Void delete", [["_d]]) Lmap("D", "nx", "Void Delete", [["_D]]) Lmap("y", "nx", "Clipboard yank", [["+y]]) Lmap("Y", "nx", "Clipboard Yank", [["+y$]]) -- Other Lmap("g", "File name", "echo expand('%:p')") -- Quickfix list Lmap("co", "Open", "copen") Lmap("cc", "Close", "cclose") Lmap("cn", "Newer list", "cnewer") Lmap("ce", "Older list", "colder") Lmap("cl", "Last item", "clast") Lmap("cf", "First item", "cfirst") -- Location list Lmap("Co", "Open", "lopen") Lmap("Cc", "Close", "lclose") Lmap("Cn", "Newer list", "lnewer") Lmap("Ce", "Older list", "lolder") Lmap("Cl", "Last item", "llast") Lmap("Cf", "First item", "lfirst") -- Buffers Lmap("bd", "Delete", "bdelete") Lmap("bu", "Unload", "bunload") Lmap("bb", "Last accessed", "buffer#") Lmap("bm", "Last modified", "bmodified") Lmap("bh", "H- split with next", "sbnext") Lmap("bH", "H- split with prev", "sbprev") Lmap("bv", "V| split with next", "vert sbnext") Lmap("bV", "V| split with prev", "vert sbprev") Lmap("bs", "V| split with last", "vert sbuffer#") Lmap("bS", "H- split with last", "sbuffer#") -- Windows  Lmap("ww", "Last accessed", "p") Lmap("wn", "New V|", "vnew") Lmap("wN", "New H-", "new") Lmap("wd", "Close", "c") Lmap("wD", "Close last accessd", "pc") Lmap("wo", "Close others", "o") Lmap("wx", "Xchange with next", "x") Lmap("we", "Equal size", "=") Lmap("wW", "Max width", "|") Lmap("wH", "Max height", "_") Lmap("wr", "Rotate downwards", "r") Lmap("wR", "Rotate upwards", "R") Lmap("ws", "V| split", "v") Lmap("wS", "H- split", "s") Lmap("wj", "Move win down", "J") Lmap("wk", "Move win up", "K") Lmap("wh", "Move win left", "H") Lmap("wl", "Move win right", "L") Lmap("w", "Move win down", "J") Lmap("w", "Move win up", "K") Lmap("w", "Move win left", "H") Lmap("w","Move win right", "L") -- LSP local lsp = vim.lsp.buf local diag = vim.diagnostic -- Normal Lmap("o", "Diagnostics float", diag.open_float) Lmap("lh", "Help", lsp.hover) Lmap("ls", "Signature help", lsp.signature_help) Lmap("ln", "Rename", lsp.rename) Lmap("lv", "Highlight", lsp.document_highlight) Lmap("lV", "Clear highlight", lsp.clear_references) Lmap("ld", "Definition", lsp.definition) Lmap("lD", "Declaration", lsp.declaration) Lmap("lt", "Type definition", lsp.type_definition) Lmap("la", "nx", "Code action", lsp.code_action) Lmap("lf", "nx", "Format", W(lsp.format) { async = true }) Lmap("lt", "Type under cursor", function() vim.lsp.util.open_floating_preview( { vim.lsp.semantic_tokens.get_at_pos()[1].type }, nil, { border = vim.g.border_bleed }) end) -- Control Lmap("lcs", "Show", diag.show) Lmap("lch", "Hide", diag.hide) Lmap("lce", "Enable", diag.enable) Lmap("lcd", "Disable", diag.disable) -- List Lmap("lld", "Diagnostics all Q", diag.setqflist) Lmap("llD", "Diagnostics buf L", diag.setloclist) Lmap("llr", "References", lsp.references) Lmap("lli", "Incoming calls", lsp.incoming_calls) Lmap("llo", "Outgoing calls", lsp.outgoing_calls) Lmap("llm", "Implementations", lsp.implementation) Lmap("lls", "Buffer symbols", lsp.document_symbol) Lmap("llw", "Workspace symbols", lsp.workspace_symbol) -- Workspace Lmap("lwa", "Add folder", lsp.add_workspace_folder) Lmap("lwr", "Remove folder", lsp.remove_workspace_folder) Lmap("lwl", "List folders", function() vim.print(lsp.list_workspace_folders()) end) -- Next/Prev local cmd = W(vim.cmd) local function try(func, fallback) return function() return pcall(vim.cmd, func) or vim.cmd(fallback) end end MakePair("s", "misspelled word", cmd "norm!]s", cmd "norm![s") MakePair("b", "buffer", cmd "bnext", cmd "bprev") MakePair("w", "window", cmd "wincmd w", cmd "wincmd W") MakePair("Q", "loclist", try("lnext", "lfirst"), try("lprev", "llast")) MakePair("q", "quickfix", try("cnext", "cfirst"), try("cprev", "clast")) MakePair("d", "diagnostic", diag.goto_next, diag.goto_prev) local map = vim.keymap.set -- ADDITIONAL -- map("i", "", "O") -- for 2 keyboard layer map("i", "", "") map("n", "", "") -- jump list map("", "", "noh") map("n", "))", ")", { desc = "Sentence forward" }) -- )* taken by treesitter map("n", "((", "(", { desc = "Sentence backward" }) -- visual stuff map("x", "<", "", ">gv") map("x", "", ":move '>+1gv=gv") map("x", "", ":move '<-2gv=gv") -- lock the cursor at the buffer center map("n", "J", "mjJ`j") map("n", "n", "nzvzz") map("n", "N", "Nzvzz") map("n", "*", "*zvzz") map("n", "#", "#zvzz") map("n", "g*", "g*zvzz") map("n", "g#", "g#zvzz") map("n", "", "zz") map("n", "", "zz") -- down/up on wrapped lines map("i", "", "norm! gj") map("i", "", "norm! gk") map({ "n", "x" }, "", "j", { remap = true }) map({ "n", "x" }, "", "k", { remap = true }) map({ "n", "x" }, "j", [[v:count == 0 ? "gj" : "j"]], { expr = true }) map({ "n", "x" }, "k", [[v:count == 0 ? "gk" : "k"]], { expr = true }) -- LAYOUT map("n", "", "", { remap = true }) map("n", "", "", { remap = true }) map("n", "", "", { remap = true }) map("n", "", "", { remap = true }) map("n", "", "", { remap = true }) map("n", "", "", { remap = true }) map("n", "", "", { remap = true }) map("n", "", "", { remap = true }) map("n", "", "j", { desc = "Lower window" }) map("n", "", "k", { desc = "Upper window" }) map("n", "", "h", { desc = "Left window" }) map("n", "", "l", { desc = "Right window" }) map("n", "", "resize -2", { desc = "Decrease height" }) map("n", "", "resize +2", { desc = "Increase height" }) map("n", "", "vert resize -2", { desc = "Decrease width" }) map("n", "", "vert resize +2", { desc = "Increase width" })