只使用临时变量怎么样:
: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)