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