0

说我有类似的东西

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

提前致谢

4

1 回答 1

0

如果您的宏记录在 register 中q,那么您可以运行:

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

在您想要的任何线路上。您的宏将希望光标在运行之前保持在第一列。

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

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

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

:let nr = line('.') - 1 | execute 'normal ^2w' . nr . 'xj'
于 2015-07-21T23:00:11.363 回答