my dotfiles for arch
at main 85 lines 2.4 kB view raw
1return { 2 "jake-stewart/multicursor.nvim", 3 branch = "1.0", 4 enabled = true, 5 config = function() 6 local mc = require("multicursor-nvim") 7 8 mc.setup() 9 10 -- Add cursors above/below the main cursor. 11 vim.keymap.set({ "n", "v" }, "<C-up>", function() 12 mc.addCursor("k") 13 end) 14 vim.keymap.set({ "n", "v" }, "<C-down>", function() 15 mc.addCursor("j") 16 end) 17 18 -- Add a cursor and jump to the next word under cursor. 19 vim.keymap.set({ "n", "v" }, "<c-n>", function() 20 mc.addCursor("*") 21 end) 22 23 -- Jump to the next word under cursor but do not add a cursor. 24 vim.keymap.set({ "n", "v" }, "<c-s>", function() 25 mc.skipCursor("*") 26 end) 27 28 -- Rotate the main cursor. 29 vim.keymap.set({ "n", "v" }, "<C-left>", mc.nextCursor) 30 vim.keymap.set({ "n", "v" }, "<C-right>", mc.prevCursor) 31 32 -- Delete the main cursor. 33 vim.keymap.set({ "n", "v" }, "<leader>x", mc.deleteCursor) 34 35 -- Add and remove cursors with control + left click. 36 vim.keymap.set("n", "<c-leftmouse>", mc.handleMouse) 37 38 vim.keymap.set({ "n", "v" }, "<c-q>", function() 39 if mc.cursorsEnabled() then 40 -- Stop other cursors from moving. 41 -- This allows you to reposition the main cursor. 42 mc.disableCursors() 43 else 44 mc.addCursor() 45 end 46 end) 47 48 vim.keymap.set("n", "<esc>", function() 49 if not mc.cursorsEnabled() then 50 mc.enableCursors() 51 elseif mc.hasCursors() then 52 mc.clearCursors() 53 else 54 -- Default <esc> handler. 55 end 56 end) 57 58 -- Align cursor columns. 59 -- vim.keymap.set("n", "<leader>a", mc.alignCursors) 60 61 -- Split visual selections by regex. 62 vim.keymap.set("v", "S", mc.splitCursors) 63 64 -- Append/insert for each line of visual selections. 65 vim.keymap.set("v", "I", mc.insertVisual) 66 vim.keymap.set("v", "A", mc.appendVisual) 67 68 -- match new cursors within visual selections by regex. 69 vim.keymap.set("v", "M", mc.matchCursors) 70 71 -- Rotate visual selection contents. 72 vim.keymap.set("v", "<leader>t", function() 73 mc.transposeCursors(1) 74 end) 75 vim.keymap.set("v", "<leader>T", function() 76 mc.transposeCursors(-1) 77 end) 78 79 -- Customize how cursors look. 80 vim.api.nvim_set_hl(0, "MultiCursorCursor", { link = "Cursor" }) 81 vim.api.nvim_set_hl(0, "MultiCursorVisual", { link = "Visual" }) 82 vim.api.nvim_set_hl(0, "MultiCursorDisabledCursor", { link = "Visual" }) 83 vim.api.nvim_set_hl(0, "MultiCursorDisabledVisual", { link = "Visual" }) 84 end, 85}