我对2to3不熟悉,但是从所有评论看,它似乎是完成这项工作的正确工具。
也就是说,也许我们可以将此问题作为一些vim基础知识上的简短课程的借口。
首先,您需要一个与正确行匹配的模式。我认为这样
^s*print>做:
^
匹配行首(并且$
匹配行尾)。s
匹配空格(空格或制表符)*
表示前一个原子的0个或多个(尽可能多,或“贪婪”)。print
是文字字符串。>
匹配字尾(零宽度)。您可以使用(文字)空间或s+
代替。
接下来,您需要确定要用括号括起来的部分。由于
*是贪婪的,
.*将匹配到行尾;无需将其锚定在右侧。使用
(s*print)和
(.*)捕获片段,以便您可以在
1和
2中引用它们。
现在,将各个部分放在一起。有很多变体,我还没有尝试过“变高尔夫”:
:%s/^(s*print)s+(.*)/1(2)
有些人更喜欢“非常魔术”版本,其中只有az,AZ,0-9和_被视为文字字符。那么您无需转义括号或加号:
:%s/^v(s*print)s+(.*)/1(2)



