# Special characters in the substitute command

1,613pages on
this wiki

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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

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