From 7efc13b5ceae88d67840a6b22ae758e500875173 Mon Sep 17 00:00:00 2001 From: Kyren223 Date: Tue, 29 Sep 2026 23:28:11 +0300 Subject: Added multicursor plugin --- .config/nvim/lua/plugins/multicursor.lua | 74 ++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 .config/nvim/lua/plugins/multicursor.lua (limited to '.config/nvim/lua') diff --git a/.config/nvim/lua/plugins/multicursor.lua b/.config/nvim/lua/plugins/multicursor.lua new file mode 100644 index 0000000..d4c6224 --- /dev/null +++ b/.config/nvim/lua/plugins/multicursor.lua @@ -0,0 +1,74 @@ +return { + 'jake-stewart/multicursor.nvim', + branch = '1.0', + event = 'VeryLazy', + config = function() + local mc = require('multicursor-nvim') + mc.setup() + + local set = vim.keymap.set + + -- Add or skip cursor above/below the main cursor. + set({ 'n', 'x' }, '', function() + mc.lineAddCursor(-1) + end) + set({ 'n', 'x' }, '', function() + mc.lineAddCursor(1) + end) + set({ 'n', 'x' }, '', function() + mc.lineSkipCursor(-1) + end) + set({ 'n', 'x' }, '', function() + mc.lineSkipCursor(1) + end) + + set({"n", "x"}, "A", mc.searchAllAddCursors) + + -- Add or skip adding a new cursor by matching word/selection + -- set({ 'n', 'x' }, 'n', function() + -- mc.matchAddCursor(1) + -- end) + -- set({ 'n', 'x' }, 's', function() + -- mc.matchSkipCursor(1) + -- end) + -- set({ 'n', 'x' }, 'N', function() + -- mc.matchAddCursor(-1) + -- end) + -- set({ 'n', 'x' }, 'S', function() + -- mc.matchSkipCursor(-1) + -- end) + + -- Disable and enable cursors. + -- set({ 'n', 'x' }, '', mc.toggleCursor) + + -- Mappings defined in a keymap layer only apply when there are + -- multiple cursors. This lets you have overlapping mappings. + mc.addKeymapLayer(function(layerSet) + -- Select a different cursor as the main one. + layerSet({ 'n', 'x' }, '', mc.prevCursor) + layerSet({ 'n', 'x' }, '', mc.nextCursor) + + -- Delete the main cursor. + layerSet({ 'n', 'x' }, 'x', mc.deleteCursor) + + -- Enable and clear cursors using escape. + layerSet('n', '', function() + if not mc.cursorsEnabled() then + mc.enableCursors() + else + mc.clearCursors() + end + end) + end) + + -- Customize how cursors look. + local hl = vim.api.nvim_set_hl + hl(0, 'MultiCursorCursor', { reverse = true }) + hl(0, 'MultiCursorVisual', { link = 'Visual' }) + hl(0, 'MultiCursorSign', { link = 'SignColumn' }) + hl(0, 'MultiCursorMatchPreview', { link = 'Search' }) + hl(0, 'MultiCursorDisabledCursor', { reverse = true }) + hl(0, 'MultiCursorDisabledVisual', { link = 'Visual' }) + hl(0, 'MultiCursorDisabledSign', { link = 'SignColumn' }) + end, +} -- cgit v1.3.1