I don't understand what makes this a "code" search and replace tool as opposed to a general text search and replace tool (a la the many many existing options for such). I was kind of expecting some kind of AST structure or grammar spec or at least a quick tokenizer to be able to handle situations like "don't replace this text if it appears in a string constant", but it doesn't mention anything like that.
Reminded me of and I wonder how it compares in performance and functionality.
At this rate of naming projects after the same valuable stones, we are going to need namespacing for the CLI tools.
I used to use which is amazing when it works but I kept having issues where it wouldn't accept my input or it'd error during processing. It was very flaky. So I've resorted to using as backup which is much simpler but reliable.

I'll check this one out...

Feels similar to `sd` (

which in my mind was the first “replace” version of ripgrep

grep -> ripgrep

sed -> sd

Most of the time if I'm doing this, it's in a git repo and I only want to affect the checked-in files so that I can easily diff my changes. So I use a combination of `git grep`, `xargs`, and `perl` via a script I named `git-gsr`:

Put it in `PATH` and then: `git gsr <old> <new>`


EDIT: Opps same name different project.

I'm glad that people make tools like this, but this is a task that I need to do so rarely that I'm likely to forget it exists, which means that I'll likely roll my own (inferior!) version as a one-time thing.

    find . [ ... find args ] | sed -e 's/nee\(dl[aeiou]\)/stack\1/g'
this is cool! i do the same thing[1], wanted ag/rg to be able to search and replace.


Can it do multiline search and replace?
Is it possible to store my config files under ~.config/amber/ on MacOS?
Not to be confused with this Amber

not to be confused with Amber, the crystal lang web framework