my dotfiles for arch
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}