如何应用每行的宏x次数,其中x取决于行

时间:2015-07-21 22:40:46

标签: vim vim-macros

说我有类似

的东西
a & 1234567890
b & 1234567890
c & 1234567890
d & 1234567890
e & 1234567890
f & 1234567890

有没有办法使用vim宏,这样我每行可以运行宏/命令x次,其中x取决于行? 在这种情况下,我在每行上运行2wx^ x次,其中x是行号,结果变为

a & 234567890
b & 34567890
c & 4567890
d & 567890
e & 67890
f & 7890

提前致谢

1 个答案:

答案 0 :(得分:0)

如果您的宏记录在注册表q中,则可以运行:

:exec 'normal ' . line('.') . '@q'

在你想要的任何一行上。您的宏将希望光标在运行之前保留在第1列。

如果你描述你想做什么,你也可以用不同的方式做得更好 - 更好。例如,也许您可​​以完全跳过宏并使用类似的东西:

:exec 'normal ^2w' . line('.') . 'xj'

如果您需要线偏移(例如1),您可以使用:

:let nr = line('.') - 1 | execute 'normal ^2w' . nr . 'xj'