只使用临时变量怎么样:
:s/0/x/g | s/1/0/g | s/x/1/g
允许|
按顺序执行多个命令(请参阅:help :command-bar
)。
因此,我们首先更改0
为x
(这样我们就不会在第二个命令中得到全零),然后更改1
为0
,最后将x
(以前的0
)更改为1
。
您可以使用匹配项在替换语句中对其应用一些逻辑
:s/\v(0|1)/\=submatch(0)==0?1:0/g
Run Code Online (Sandbox Code Playgroud)
分解为
\v(0|1) search for either a 0 or 1
\=submatch(0)==0?1:0 if match equals 0 replace with 1, otherwise with 0
Run Code Online (Sandbox Code Playgroud)
寻找:h \=
并:h submatch
寻求额外的帮助。
将cudo编辑为 BEn C
或者,使用一些巧妙的算术来缩短命令
:s/\v(0|1)/\=1-submatch(0)/g
Run Code Online (Sandbox Code Playgroud)