Здесь есть несколько вопросов.
парены в vim regexen не для захвата - вам нужно использовать \( \)
для захвата.
*
не означает, что вы думаете. Это означает «0 или более из предыдущего», поэтому ваше регулярное выражение означает «строку, содержащую shop_
, за которой следует 0+ (
, а затем литерал )
.
Вы ищете .
, что в регулярном выражении означает «любой символ». Соедините со звездой как .*
, что означает «0 или более любого символа». Возможно, вам нужен хотя бы один символ, поэтому используйте .\+
(+
означает «1 или больше из предыдущего ")
Используйте это: %s/shop_\(.\+\)/shop_\1 wp_\1/
.
При желании завершите его с g
после последней косой черты, чтобы заменить все экземпляры в одной строке, а не только в первой.