https://stackoverflow.com/questions/ask
从正常模式下的第一个字符,在qaqqaf/[email protected]@a
键入清除所有的斜杠。
- QAQ清除寄存器
- QA开始记录到
- F/X删除下一个正斜杠
- @a重新运行宏
- q结束记录
但在运行normal qaqqaf/[email protected]@a
后停止 - 它似乎在递归调用保释。如果您尝试使用映射命令,则会发生同样的情况。
我的语法有什么问题吗?或者是不可能用normal
记录一个递归宏?
注:我知道这是可以写一个递归宏与let
。我想知道,如果这是写了递归宏无需手动记录的唯一途径:
let @a = "f/[email protected]"
normal @a
(我问,因为这个答案:Remove everything except regex match in Vim)
Vim可以在寄存器宏执行任何更改的功能。因此,无论如何,将命令放入寄存器都是一种方式,就像在文本中一样。我相信'让'是做这个映射的最好方法。 – 2011-01-07 23:58:58
对,但是有可能用'normal' **来记录一个递归宏**吗? – idbrii 2011-01-09 03:21:02
似乎'正常'不能很好地处理递归宏。我似乎无法得到一个适当的记录。但是,您可以像这样一起使用'execute'和'feedkeys()':'exe feedkeys(“qaqqar_l @ aq @ a”,'t')'来记录和执行宏。 – 2011-01-11 21:33:50