我在寻求仅在偶数行上执行替换时发现了以下内容:
:g/^/if !(line('.')%2)|s/foo/bar/g|endif
Run Code Online (Sandbox Code Playgroud)
效果很好.但有人可以解释一下|的必要性 :g调用的命令部分中的字符?
该|字符是命令分隔符 ; 使用它,您可以在一行中连接多个Ex命令,而无需添加换行符.见:help :bar.
因此,您的条件等同于以下内容:
if !(line('.')%2)
s/foo/bar/g
endif
Run Code Online (Sandbox Code Playgroud)
请注意,某些Ex命令会占用命令行的整个剩余部分,因此无法直接连接|.但是你可以将这些命令包装起来:execute "{cmd}".