2010-02-17 111 views
3

我有以下行文件:vi:有没有办法来处理正则表达式匹配?

img width="240" height="120" 

我要缩放以相同的量的宽度和高度,以便

:%s/width="\\(.*\\)" height="\\(.*\\)"/width="2*\\1" height="2*\\2"/g 

产生

img width="2*240" height="2*120" 

反正是有让vi实际计算2*240=480并在结果中放入480

感谢您的帮助。

回答

1

我通常使用外部滤波器之类的事情:

​​

注意,有一个额外的逃逸有直接运行的是PERL时将不会出现。您必须转义%符号,否则vim会将其展开为当前文件名。

但是你可以尝试:

 
:help sub-replace-expression 

,如果你不希望使用一个外部滤波器。

4

我可以得到一些接近你

:s/\(\d\+\)/\=submatch(1)*2/gc 

问什么,但我会用一个外部滤波器。

+0

清晰简洁。精彩 – sehe 2011-03-30 08:35:50

相关问题