Most of the vim users know this this command:
:% s/old/new/g. It’s a simple
new, it’s a regular expression based substitution with
g flag and
% means do it on the whole file.
We can use any ranges instead of
%. We can use the previously used
:'<,'> s/old/new/g to do it on a visual selected section, we can use exact line
:10,33 s/old/new/g, or we can use relative line numbers like
:-10,. s/old/new/g which will replace all
new between the cursor
and 10 lines above the cursor. Without a range, it operates on the active line.
That’s for the range part, what about the flag? We can use a lot more than
Here is a list of useful flags:
c: Confirm each substitution. It can be very useful if we want to replace some of them, but not all of them.
g: Replace all occurrences in the line.
i: Ignore case for the pattern.
I: Don’t ignore case for the pattern. It’s useful if vim is configured to ignore case by default.
A lesser known fact, we can omit the
old part if we did a search before.
If it’s empty, substitute will use the last search value as pattern. So we
/old, reviewed it and we want to replace all of them, we
can simply call
2021-12-10 00:00 +0000