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'.
我对 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'.