在以下代码段中,我想将total
,MB
和free
中的每一个都转换为float()
totalMBytes = int32(total / MB)
freeMBytes = int32(free / MB)
是否有一种快速方法可以在一个位置进行此更改并使用vim中的技巧将其应用到其他位置?预期的输出是:
totalMBytes = int32(float(total) / float(MB))
freeMBytes = int32(float(free) / float(MB))
答案 0 :(得分:3)
首先,我们有专门针对Vim问题的网站的vi.SE部分。你可能会在那里得到更好的答案(如果你有更多的Vim问题)。
然而,就问题本身而言,有几种方法可以做到这一点。从:
开始[t]otalMBytes = int32(total / MB)
freeMBytes = int32(free / MB)
假设光标位于t
(标记为)并假设该文件有其他行。并且最终结果应为:
totalMBytes = (float)int32((float)total / (float)MB)
freeMBytes = (float)int32((float)free / (float)MB)
让我们给出几个选择:
.
使用w
跳转字词,.
重复更改,如下所示:
2wi(float)<esc>3w.3w.5w.3w.3w.
说明:
2w
向前跳2个字。i(float)<esc>
进入插入模式,插入(浮动)并退出插入模式。3w
向前移动3个字.
重复此职位的最后一次更改(你可以四处走动并使用.
,你不需要一个字一个字地去。)
选择Vj
和
:'<,'>s/\v([ (])(\w)/\1(float)\2/g
按qq
在注册q
中录制宏并执行:
2wi(float)<esc>3w.3w.
这与第一个示例中的相同,但仅对第一行执行更改。现在按q
停止录制宏,然后按jg^
以转到下一行的第一个字符。最后执行宏:
@q