---@type LazyKeysSpec[] local keys = { -- Normal and Visual maps { "", function() require("multicursor-nvim").lineAddCursor(-1) end, mode = { "n", "v" }, desc = "Add cursor above/below the main cursor", }, { "", function() require("multicursor-nvim").lineAddCursor(1) end, mode = { "n", "v" }, desc = "Add cursor above/below the main cursor", }, { "", function() require("multicursor-nvim").lineSkipCursor(-1) end, mode = { "n", "v" }, desc = "Skip cursor above/below the main cursor", }, { "", function() require("multicursor-nvim").lineSkipCursor(1) end, mode = { "n", "v" }, desc = "Skip cursor above/below the main cursor", }, { "n", function() require("multicursor-nvim").matchAddCursor(1) end, mode = { "n", "v" }, desc = "Add adding a new cursor by matching word/selection", }, { "s", function() require("multicursor-nvim").matchSkipCursor(1) end, mode = { "n", "v" }, desc = "Skip adding a new cursor by matching word/selection", }, { "N", function() require("multicursor-nvim").matchAddCursor(-1) end, mode = { "n", "v" }, desc = "Add adding a new cursor by matching word/selection", }, { "S", function() require("multicursor-nvim").matchSkipCursor(-1) end, mode = { "n", "v" }, desc = "Skip adding a new cursor by matching word/selection", }, { "A", function() require("multicursor-nvim").matchAllAddCursors() end, mode = { "n", "v" }, desc = "Add all matches in the document", }, { "", function() require("multicursor-nvim").nextCursor() end, mode = { "n", "v" }, desc = "Rotate the main cursor", }, { "", function() require("multicursor-nvim").prevCursor() end, mode = { "n", "v" }, desc = "Rotate the main cursor", }, { "x", function() require("multicursor-nvim").deleteCursor() end, mode = { "n", "v" }, desc = "Delete the main cursor", }, { "", function() require("multicursor-nvim").toggleCursor() end, mode = { "n", "v" }, desc = "Easy way to add and remove cursors using the main cursor", }, { "", function() require("multicursor-nvim").duplicateCursors() end, mode = { "n", "v" }, desc = "Clone every cursor and disable the originals", }, { "", function() require("multicursor-nvim").jumpForward() end, mode = { "n", "v" }, desc = "Jumplist support", }, { "", function() require("multicursor-nvim").jumpBackward() end, mode = { "n", "v" }, desc = "Jumplist support", }, -- Normal mode maps { "", function() require("multicursor-nvim").handleMouse() end, mode = "n", desc = "Add and remove cursors with control + left click", }, { "", 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", }, { "gv", function() require("multicursor-nvim").restoreCursors() end, mode = "n", desc = "bring back cursors if you accidentally clear them", }, { "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", }, { "t", function() require("multicursor-nvim").transposeCursors(1) end, mode = "v", desc = "Rotate visual selection contents", }, { "T", function() require("multicursor-nvim").transposeCursors(-1) end, mode = "v", desc = "Rotate visual selection contents", }, ]] } return keys