Vim regex backreference
If I understand correctly, you want %s/shop_\(.*\)/shop_\1 wp_\1/
Escape the capturing parenthesis and use .*
to match any number of any character.
(Your search is searching for "shop_" followed by any number of opening parentheses followed by a closing parenthesis)
There's several issues here.
parens in vim regexen are not for capturing -- you need to use
\( \)
for captures.*
doesn't mean what you think. It means "0 or more of the previous", so your regex means "a string that containsshop_
followed by 0+(
and then a literal)
.
You're looking for.
, which in regex means "any character". Put together with a star as.*
it means "0 or more of any character". You probably want at least one character, so use.\+
(+
means "1 or more of the previous")
Use this: %s/shop_\(.\+\)/shop_\1 wp_\1/
.
Optionally end it with g
after the final slash to replace for all instances on one line rather than just the first.