return { 'roobert/search-replace.nvim', config = function() require('search-replace').setup { -- optionally override defaults default_replace_single_buffer_options = 'gcI', default_replace_multi_buffer_options = 'egcI', } vim.keymap.set('v', '', 'SearchReplaceSingleBufferVisualSelection', opts) vim.keymap.set('v', '', 'SearchReplaceWithinVisualSelection', opts) vim.keymap.set('v', '', 'SearchReplaceWithinVisualSelectionCWord', opts) vim.keymap.set('n', 'rs', 'SearchReplaceSingleBufferSelections', { desc = '[s]elction list' }) vim.keymap.set('n', 'ro', 'SearchReplaceSingleBufferOpen', { desc = '[o]pen' }) vim.keymap.set('n', 'rw', 'SearchReplaceSingleBufferCWord', { desc = '[w]ord' }) vim.keymap.set('n', 'rW', 'SearchReplaceSingleBufferCWORD', { desc = '[W]ORD' }) vim.keymap.set('n', 're', 'SearchReplaceSingleBufferCExpr', { desc = '[e]xpr' }) vim.keymap.set('n', 'rf', 'SearchReplaceSingleBufferCFile', { desc = '[f]ile' }) vim.keymap.set('n', 'rbs', 'SearchReplaceMultiBufferSelections', { desc = '[s]elction list' }) vim.keymap.set('n', 'rbo', 'SearchReplaceMultiBufferOpen', { desc = '[o]pen' }) vim.keymap.set('n', 'rbw', 'SearchReplaceMultiBufferCWord', { desc = '[w]ord' }) vim.keymap.set('n', 'rbW', 'SearchReplaceMultiBufferCWORD', { desc = '[W]ORD' }) vim.keymap.set('n', 'rbe', 'SearchReplaceMultiBufferCExpr', { desc = '[e]xpr' }) vim.keymap.set('n', 'rbf', 'SearchReplaceMultiBufferCFile', { desc = '[f]ile' }) -- show the effects of a search / replace in a live preview window vim.o.inccommand = 'split' end, }