我对Vim世界并不陌生。我正在尝试将*=
,~=
(实际为[special char]=
)替换为[whatever is symbol]=
(双方都添加空格)。这是我的替代命令:
:%s/[~,\*]=/ = /g
这种情况下的问题是我无法在等号前添加相应的特殊符号。你能救我吗......
答案 0 :(得分:2)
这是一个经典的捕获和替换用例。通过将符号部分封装在\(...\)
中来捕获符号部分,然后通过\1
在替换部分中引用它。您可以在:help s/\1
(或一般:help :substitute
)找到更多详细信息:
:%s/\([~,\*]\)=/ \1= /g
或者,您只能=
与\zs
开始匹配。这个断言符号部分在那里,但因为它不包含在匹配中,所以你不需要引用它:
:%s/[~,\*]\zs=/ = /g
最后可以使用\ze
同样的技巧。如您所见,这通常会导致更短的命令。
答案 1 :(得分:1)
这可能是您问题的最简单答案:
:%s/[~,\*]=/ & /
替换段中的&
表示“完全匹配”。