我有一些python代码有很多这样的行:
print "some text" + variables + "more text and special characters .. etc"
我想修改它以将打印后的所有内容放在括号内,如下所示:
print ("some text" + variables + "more text and special characters .. etc")
如何使用正则表达式在vim中执行此操作?
答案 0 :(得分:2)
使用此替代品:
%s/print \(.*$\)/print (\1)
\(.*$\)
匹配到行尾的所有内容,并使用转义括号将其捕获到一个组中。替换包括使用\1
的此组,由字面括号括起来。
答案 1 :(得分:1)
:%s/print \(.*\)/print(\1)/c
或者,如果您在视觉上选择了多行
:'<,'>s/print \(.*\)/print(\1)/c
%
- 每一行
'<,'>
- 选定的行
s
- 替代
c
- 确认 - 在转换之前显示匹配的内容
print \(.*\)
- 完全匹配打印后跟空格,然后将\(
和\)
之间的所有内容分组。
print(\1)
- 替换为print(&lt; first match&gt;)
Vim有正则表达式的一些功能规则,你可以:help substitute
或:help regex
查看它们是什么。