Fandom

Vim Tips Wiki

Special characters in the substitute command

1,624pages on
this wiki
Add New Page
Talk0 Share

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

Tip 654 Printable Monobook Previous Next

created February 15, 2004 · complexity basic · author Hyouck Kim · version 6.0


Let's think about the code below.

void
howdy(void)
{
  M00 =
  M01 =
  M10 =
  M11 =
  M20 =
  M21 = 0;
}

Now you want to change the code like

void
howdy(void)
{
  M[0][0] =
  M[0][1] =
  M[1][0] =
  M[1][1] =
  M[2][0] =
  M[2][1] = 0;
}

You can easily do that with

:g/\(M\)\([0-9]\)\([0-9]\)/s//\1[\2][\3]/g

Here, \1 is a special substitute character meaning first part of the search pattern.

To specify a part in your search pattern, simply enclose your search pattern with "\(" and "\)".

Thus, in the above example

\(M\) corresponds to \1, and
\([0-9]\) to \2 and etc...

And substitute pattern "\1[\2][\3]" means

"1st part" + "[" + "2nd part" + "]" + "[" + "3rd part" + "]"

which is what we want here.

ReferencesEdit

CommentsEdit

Why not

%s/\(\d\)\(\d\)/[\1][\2]/

This works too:

%s/\v(\d)(\d)/[\1][\2]

Also on Fandom

Random Wiki