如何在Vim中编写一个模式,以便在两个字符串之间进行双向交换

5

xxx <=> zzz


原始文本:

xxxyyyzzz

运行命令:

:s/???/???/

变成:

zzzyyyxxx

再次运行相同的命令:

:s/???/???/

回到原始文本:

xxxyyyzzz


就像切换大小写一样(~)

aBCdeFg <=> AbcDEfG

3个回答

8

1
这是我想要的内容::s/xxx\|zzz/\={'xxx':'zzz','zzz':'xxx'}[submatch(0)]/g。谢谢! - kev

3

试试这个:

:s/(...)(yyy)(...)/\3\2\1/

0

你可以编写自己的宏。我假设对于这个特定的示例,宏可能对你没有帮助,但如果你想要,我可以发布一个。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接