1

我有一些带有很多行的python代码,如下所示:

print "some text" + variables + "more text and special characters .. etc"

我想修改它以将打印后的所有内容都放在括号内,如下所示:

print ("some text" + variables + "more text and special characters .. etc")

如何使用正则表达式在 vim 中执行此操作?

4

2 回答 2

2

使用这个替代品:

%s/print \(.*$\)/print (\1)

\(.*$\)匹配到行尾的所有内容,并使用转义括号将其捕获在一个组中。替换包括该组 using \1,并用括号括起来。

于 2012-08-04T15:18:45.257 回答
1
:%s/print \(.*\)/print(\1)/c

或者,如果您直观地选择多行

:'<,'>s/print \(.*\)/print(\1)/c

%- 每行
'<,'>- 选定的行
s- 替换
c- 确认 - 在转换之前显示匹配的内容
print \(.*\)- 完全匹配 print 后跟空格,然后将\(and之间的所有内容分组\)
print(\1)- 替换为 print(<first match>)

Vim 有一些正则表达式的函数规则,你可以做:help substitute:help regex看看它们是什么。

于 2012-08-04T15:19:03.730 回答