Vim - 仅在某些行上执行替换

时间:2014-05-15 13:09:10

标签: vim substitution

我在寻求仅对偶数行进行替换时发现了以下内容:

:g/^/if !(line('.')%2)|s/foo/bar/g|endif 

效果很好。但有人可以解释一下|的必要性:g调用的命令部分中的字符?

1 个答案:

答案 0 :(得分:5)

|字符是命令分隔符;使用它,您可以在一行中连接多个Ex命令,而无需添加换行符。请参阅:help :bar

因此,您的条件相当于以下内容:

if !(line('.')%2)
    s/foo/bar/g
endif

请注意,某些Ex命令会占用命令行的整个剩余部分,因此无法与|直接连接。但是你可以将这些命令包装在:execute "{cmd}"