使用 VIM 替换,重用部分搜索模式

Ber*_*ard 52 vim vi regular-expression replace

我正在使用VIm并尝试设置一个搜索和替换命令来进行一些替换,我可以在其中重新使用作为我的搜索字符串一部分的正则表达式。

一个简单的例子是一条线,我想更换(10)到{10},其中10可以是任何数字。

我来了这么远

  .s/([0-9]*)/what here??/
Run Code Online (Sandbox Code Playgroud)

这与我想要的部分完全匹配。

现在更换,我试过了

  .s/([0-9]*)/{\0}/
Run Code Online (Sandbox Code Playgroud)

但是,这作为输出 {(10)}

然后,我试过了

 .s/(\zs[0-9]*\ze)/{\0}/
Run Code Online (Sandbox Code Playgroud)

然而,这给了我({10}),我也关闭了,但不是我想要的。

我想我需要一些其他类型的标记/反向引用而不是 this \0,但我不知道在哪里看。所以问题是,这可以在 vim 中完成吗,如果可以,怎么做?

rus*_*ush 71

\0是整场比赛。要仅使用其中的一部分,您需要像这样设置它并使用 \1

.s/(\([0-9]*\))/{\1}/
Run Code Online (Sandbox Code Playgroud)

您可以在此处或 vim 帮助中找到更详细的说明。

  • 请注意捕获的括号是反斜杠转义的。 (5认同)