我有一些带有很多行的python代码,如下所示:
print "some text" + variables + "more text and special characters .. etc"
我想修改它以将打印后的所有内容都放在括号内,如下所示:
print ("some text" + variables + "more text and special characters .. etc")
如何使用正则表达式在 vim 中执行此操作?
使用这个替代品:
%s/print \(.*$\)/print (\1)
\(.*$\)
匹配到行尾的所有内容,并使用转义括号将其捕获在一个组中。替换包括该组 using \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
看看它们是什么。