chore: rm multicursor, add snacks

This commit is contained in:
tkrnts-sr 2026-02-06 04:07:16 +09:00
parent 2c09bed8dd
commit 8921b605ec
2 changed files with 23 additions and 159 deletions

View File

@ -1,159 +0,0 @@
return {
'jake-stewart/multicursor.nvim',
lazy = false,
branch = '1.0',
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' }, '<up>', function()
mc.lineAddCursor(-1)
end)
set({ 'n', 'x' }, '<down>', function()
mc.lineAddCursor(1)
end)
set({ 'n', 'x' }, '<leader><up>', function()
mc.lineSkipCursor(-1)
end)
set({ 'n', 'x' }, '<leader><down>', function()
mc.lineSkipCursor(1)
end)
-- Add or skip adding a new cursor by matching word/selection
set({ 'n', 'x' }, '<leader>n', function()
mc.matchAddCursor(1)
end)
set({ 'n', 'x' }, '<leader>s', function()
mc.matchSkipCursor(1)
end)
set({ 'n', 'x' }, '<leader>N', function()
mc.matchAddCursor(-1)
end)
set({ 'n', 'x' }, '<leader>S', function()
mc.matchSkipCursor(-1)
end)
-- Add and remove cursors with control + left click.
set('n', '<c-leftmouse>', mc.handleMouse)
set('n', '<c-leftdrag>', mc.handleMouseDrag)
set('n', '<c-leftrelease>', mc.handleMouseRelease)
-- Disable and enable cursors.
set({ 'n', 'x' }, '<c-q>', 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' }, '<left>', mc.prevCursor)
layerSet({ 'n', 'x' }, '<right>', mc.nextCursor)
-- Delete the main cursor.
layerSet({ 'n', 'x' }, '<leader>x', mc.deleteCursor)
-- Enable and clear cursors using escape.
layerSet('n', '<esc>', function()
if not mc.cursorsEnabled() then
mc.enableCursors()
else
mc.clearCursors()
end
end)
-- Pressing `gaip` will add a cursor on each line of a paragraph.
set('n', 'ga', mc.addCursorOperator)
-- Clone every cursor and disable the originals.
set({ 'n', 'x' }, '<leader><c-q>', mc.duplicateCursors)
-- Align cursor columns.
set('n', '<leader>a', mc.alignCursors)
-- Split visual selections by regex.
set('x', 'S', mc.splitCursors)
-- match new cursors within visual selections by regex.
set('x', 'M', mc.matchCursors)
-- bring back cursors if you accidentally clear them
set('n', '<leader>gv', mc.restoreCursors)
-- Add a cursor for all matches of cursor word/selection in the document.
set({ 'n', 'x' }, '<leader>A', mc.matchAllAddCursors)
-- Rotate the text contained in each visual selection between cursors.
set('x', '<leader>t', function()
mc.transposeCursors(1)
end)
set('x', '<leader>T', function()
mc.transposeCursors(-1)
end)
-- Append/insert for each line of visual selections.
-- Similar to block selection insertion.
set('x', 'I', mc.insertVisual)
set('x', 'A', mc.appendVisual)
-- Increment/decrement sequences, treaing all cursors as one sequence.
set({ 'n', 'x' }, 'g<c-a>', mc.sequenceIncrement)
set({ 'n', 'x' }, 'g<c-x>', mc.sequenceDecrement)
-- Add a cursor and jump to the next/previous search result.
set('n', '<leader>/n', function()
mc.searchAddCursor(1)
end)
set('n', '<leader>/N', function()
mc.searchAddCursor(-1)
end)
-- Jump to the next/previous search result without adding a cursor.
set('n', '<leader>/s', function()
mc.searchSkipCursor(1)
end)
set('n', '<leader>/S', function()
mc.searchSkipCursor(-1)
end)
-- Add a cursor to every search result in the buffer.
set('n', '<leader>/A', mc.searchAllAddCursors)
-- Pressing `<leader>miwap` will create a cursor in every match of the
-- string captured by `iw` inside range `ap`.
-- This action is highly customizable, see `:h multicursor-operator`.
set({ 'n', 'x' }, '<leader>m', mc.operator)
-- Add or skip adding a new cursor by matching diagnostics.
set({ 'n', 'x' }, ']d', function()
mc.diagnosticAddCursor(1)
end)
set({ 'n', 'x' }, '[d', function()
mc.diagnosticAddCursor(-1)
end)
set({ 'n', 'x' }, ']s', function()
mc.diagnosticSkipCursor(1)
end)
set({ 'n', 'x' }, '[S', function()
mc.diagnosticSkipCursor(-1)
end)
-- Press `mdip` to add a cursor for every error diagnostic in the range `ip`.
set({ 'n', 'x' }, 'md', function()
-- See `:h vim.diagnostic.GetOpts`.
mc.diagnosticMatchCursors { severity = vim.diagnostic.severity.ERROR }
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,
}

View File

@ -0,0 +1,23 @@
return {
'folke/snacks.nvim',
priority = 1000,
lazy = false,
---@type snacks.Config
opts = {
-- your configuration comes here
-- or leave it empty to use the default settings
-- refer to the configuration section below
bigfile = { enabled = true },
dashboard = { enabled = true },
explorer = { enabled = true },
indent = { enabled = true },
input = { enabled = true },
picker = { enabled = true },
notifier = { enabled = true },
quickfile = { enabled = true },
scope = { enabled = true },
scroll = { enabled = false },
statuscolumn = { enabled = false },
words = { enabled = true },
},
}