重复上次更改多次而不替换原始计数

时间:2014-04-03 19:32:50

标签: vim

.的文档说:

  

重复上一次更改,将计数替换为[count]。

是否可以重复一次更改而无需更换计数而无需使用宏?

或者,是否可以多次重复更改而不将数字解释为命令的计数值?

上下文:

我正在进行this VimGolf挑战,目标是扭转字母表:

abcdefghijklmnopqrstuvwxyz变为zyxwvutsrqponmlkjihgfedcba

我的方法是跳转到z并使用"Ax将每个字母附加到寄存器a,然后粘贴寄存器a,其中包含反转的字符串。若要重复"Ax,录制宏并使用25@q有效,请按. 26次,但26.26"Ax不起作用,因为26适用于x的计数,使命令尝试删除光标右侧的26个字符。

1 个答案:

答案 0 :(得分:3)

你需要的是宏,而不是[count].因为.重复最后一个cmd。如果你给它计数,正如你所看到的那样,计数将应用于最后一个cmd,因此它将是26x,而不是pressing x 26 times。通常没有区别,但如果您的光标位于该行的末尾,则26xx相同。

你需要的是一个宏,如果你不想qx...q,你可能想知道一些技巧:(没有考虑过多的击键次数)

trick1

使用=注册:

26@='"Ax'<cr>

这就是你想要的。

TRICK2

使用.注册。

假设在起点处,光标位于第1行col1上,请按:A"Ax<esc>U26@.

第一个A跳转到EOL并输入INSERT,大U撤消当前行的插入文本,保存到&#39;。&#39; (点)注册

现在你可以重播&#34; reg 26次。

关于这一挑战,最直接的解决方案(可能不是最短的)将是:set revins选项,简而言之:se ri

希望它有所帮助。