---@type LazyKeysSpec[] local keys = { -- Normal and Visual maps { "<up>", function() require("multicursor-nvim").lineAddCursor(-1) end, mode = { "n", "v" }, desc = "Add cursor above/below the main cursor", }, { "<down>", function() require("multicursor-nvim").lineAddCursor(1) end, mode = { "n", "v" }, desc = "Add cursor above/below the main cursor", }, { "<leader><up>", function() require("multicursor-nvim").lineSkipCursor(-1) end, mode = { "n", "v" }, desc = "Skip cursor above/below the main cursor", }, { "<leader><down>", function() require("multicursor-nvim").lineSkipCursor(1) end, mode = { "n", "v" }, desc = "Skip cursor above/below the main cursor", }, { "<leader>n", function() require("multicursor-nvim").matchAddCursor(1) end, mode = { "n", "v" }, desc = "Add adding a new cursor by matching word/selection", }, { "<leader>s", function() require("multicursor-nvim").matchSkipCursor(1) end, mode = { "n", "v" }, desc = "Skip adding a new cursor by matching word/selection", }, { "<leader>N", function() require("multicursor-nvim").matchAddCursor(-1) end, mode = { "n", "v" }, desc = "Add adding a new cursor by matching word/selection", }, { "<leader>S", function() require("multicursor-nvim").matchSkipCursor(-1) end, mode = { "n", "v" }, desc = "Skip adding a new cursor by matching word/selection", }, { "<leader>A", function() require("multicursor-nvim").matchAllAddCursors() end, mode = { "n", "v" }, desc = "Add all matches in the document", }, { "<left>", function() require("multicursor-nvim").nextCursor() end, mode = { "n", "v" }, desc = "Rotate the main cursor", }, { "<right>", function() require("multicursor-nvim").prevCursor() end, mode = { "n", "v" }, desc = "Rotate the main cursor", }, { "<leader>x", function() require("multicursor-nvim").deleteCursor() end, mode = { "n", "v" }, desc = "Delete the main cursor", }, { "<c-q>", function() require("multicursor-nvim").toggleCursor() end, mode = { "n", "v" }, desc = "Easy way to add and remove cursors using the main cursor", }, { "<leader><c-q>", function() require("multicursor-nvim").duplicateCursors() end, mode = { "n", "v" }, desc = "Clone every cursor and disable the originals", }, { "<c-i>", function() require("multicursor-nvim").jumpForward() end, mode = { "n", "v" }, desc = "Jumplist support", }, { "<c-o>", function() require("multicursor-nvim").jumpBackward() end, mode = { "n", "v" }, desc = "Jumplist support", }, -- Normal mode maps { "<c-leftmouse>", function() require("multicursor-nvim").handleMouse() end, mode = "n", desc = "Add and remove cursors with control + left click", }, { "<esc>", function() if not require("multicursor-nvim").cursorsEnabled() then require("multicursor-nvim").enableCursors() elseif require("multicursor-nvim").hasCursors() then require("multicursor-nvim").clearCursors() end end, mode = "n", }, { "<leader>gv", function() require("multicursor-nvim").restoreCursors() end, mode = "n", desc = "bring back cursors if you accidentally clear them", }, { "<leader>a", function() require("multicursor-nvim").alignCursors() end, mode = "n", desc = "Align cursor columns", }, -- Visual mode maps -- HACK: Disabled to prevent unintended behavior --[[ { "S", function() require("multicursor-nvim").splitCursors() end, mode = "v", desc = "Split visual selections by regex", }, { "I", function() require("multicursor-nvim").insertVisual() end, mode = "v", desc = "Insert for each line of visual selections", }, { "A", function() require("multicursor-nvim").appendVisual() end, mode = "v", desc = "Append for each line of visual selections", }, { "M", function() require("multicursor-nvim").matchCursors() end, mode = "v", desc = "match new cursors within visual selections by regex", }, { "<leader>t", function() require("multicursor-nvim").transposeCursors(1) end, mode = "v", desc = "Rotate visual selection contents", }, { "<leader>T", function() require("multicursor-nvim").transposeCursors(-1) end, mode = "v", desc = "Rotate visual selection contents", }, ]] } return keys