Sad.nvim
Space Age seD in Neovim. A project-wide find and replace plugin for Neovim.
Install / Use
/learn @ray-x/Sad.nvimREADME
sad.nvim
Space Age seD in neovim. A project wide find and replace plugin with sad & fzf
This plug is a wrapper for sad by ms-jqd
You need
- install sad
- fzf so you can confirm/select the matches to apply your changes
- by default the plugin using fd to list all files in the current folder, you can use
git ls_file - a pager tool, e.g.
delta
https://user-images.githubusercontent.com/1681295/144705615-658ab025-f2a3-4857-b9d3-e5e2142bf316.mp4
install
Plug
Plug 'ray-x/guihua.lua', {'do': 'cd lua/fzy && make' }
Plug 'ray-x/sad.nvim'
packer
require("packer").startup({
function(use)
use({ "wbthomason/packer.nvim" })
use({
"ray-x/sad.nvim",
requires = { "ray-x/guihua.lua", run = "cd lua/fzy && make" },
config = function()
require("sad").setup{}
end,
})
end,
})
Configure
require'sad'.setup({
debug = false, -- print debug info
diff = 'delta', -- you can use `less`, `diff-so-fancy`
ls_file = 'fd', -- also git ls-files
exact = false, -- exact match
vsplit = false, -- split sad window the screen vertically, when set to number
-- it is a threadhold when window is larger than the threshold sad will split vertically,
height_ratio = 0.6, -- height ratio of sad window when split horizontally
width_ratio = 0.6, -- height ratio of sad window when split vertically
})
usage
- If you put your cursor on the word want to replace or visual select the word you want to replace, simply run
:Sad
You will be prompt to input new word to be replace
- replace all
oldtexttonewtextfor all project files
:Sad oldtext newtext
- add file filter, e.g lua files
:Sad oldtext newtext lua
- The lua way, you can add key map
-- replace old with new
lua require'sad'.replace('old', 'new')
-- or replace old with input for 'md' files
lua require'sad'.replace('old', nil, 'md')
-- or replace expand('<word>') or visual select with 'new' for md files
lua require'sad'.replace(nil, 'new', 'md')
-- or replace expand('<word>') or visual select with your input for md files
lua require'sad'.replace(nil, nil, 'md')
"capture group "123" -> 🌈123🌈
:Sad "(\d+)" '🌈$1🌈'
"capture group 123 -> 🌈123🌈
:Sad (\d+) '🌈$1🌈'
" multiple lines:"
Sad (firstKey:firstValue\n\s*secondKey):secondVal $1:newSecondValue
" or use ${1}
Sad (firstKey:firstValue\n\s*secondKey:)secondVal ${1}newSecondValue
confirm or cancel
- <Tab> To toggle the individual item in the replacement list
- <CR> to confirm and apply all the replacement
- <Esc> to cancel all changes
- <Ctrl-a> toggle select all
Alternatives
-
vim&neovim: far.vim a vim plugin with python & vimscript
-
neovim: nvim-spectre Lua plugin, find with
rgand replace withsedand most importantly, with realtime preview
Related Skills
node-connect
338.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.4kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
338.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.4kCommit, push, and open a PR
