vim 多字符替换正则表达式问题

vim multiple character substitute regex issue

我对 Vim 世界有点陌生。我正在尝试将 *=~=(实际上是 [special char]=)替换为 [whatever is symbol]=(在两侧添加 space)。这是我的替代命令:

:%s/[~,\*]=/ = /g

这种情况下的问题是我无法在等号前添加相应的特殊符号。你能帮帮我吗...

这是一个经典的捕获和替换用例。通过将符号部分包含在 \(...\) 中来捕获符号部分,然后通过 </code> 在替换部分中引用它。您可以在 <code>:help s/(或一般的 :help :substitute)找到更多详细信息:

:%s/\([~,\*]\)=/ = /g

或者,您可以仅在 =\zs 上开始 比赛。此 断言 符号部分存在,但由于它未包含在匹配中,因此您无需引用它:

:%s/[~,\*]\zs=/ = /g

同样的技巧可以用在最后的 \ze 上。如您所见,这通常会导致更短的命令。

这可能是对您的问题最简单的回答:

:%s/[~,\*]=/ & /
替换段中的

An& 表示 'entire match'.