[SOLVED] Substitute a regular expression by text in between the regular expression

Issue

This Content is from Stack Overflow. Question asked by cookiemonster

Suppose I want to change

hl{abc}
{}
{
}
hl{12}

to

abc
{}
}
{
12

Basically I want to remove hl{}. How can I do this in vim? I was considering :s/\hl{.*}//g but that also takes away the text in between.



Solution

You can use \(…\) (see :help /\() to capture the text in between, and use \1 (see :help s/\1) to make use of it in the substitution: :s/\\hl{\(.*\)}/\1/g.


This Question was asked in StackOverflow by cookiemonster and Answered by Enlico It is licensed under the terms of CC BY-SA 2.5. - CC BY-SA 3.0. - CC BY-SA 4.0.

people found this article helpful. What about you?