我编写了一个宏,在行尾添加
;
并将光标移动到下一行。我重复运行此宏以将 ;
添加到缓冲区的每一行。
这是我的意见
qaA;ESCjq
1000@a
这是我的问题。我的文件只有 5 行,我重复宏 1000 次。它应该在最后一行的末尾添加很多
;
,但 vim 所做的只是停在文件末尾。我想知道vim中的哪个机制导致了这个。
我相信这是一个简单的问题,但我只是找不到任何官方文档来证明这一点。所以我希望有一些文档能够正式描述这个机制。
:help @
的这一部分:
寄存器像映射一样执行
:help map-error
结合:
请注意,当遇到错误时(导致错误消息或蜂鸣声) 映射的其余部分不执行。这是 Vi 兼容的。
这种推理的弱点在于,计数在
@
中的应用方式与映射中不同。
创建一个附加分号的映射并调用它 1000 次 将添加 1000 个分号。创建向下然后添加分号(例如 :nnoremap <f2> jA;<Esc>
)的映射将在缓冲区的最后一行失败。如果您将
1000@x
视为“创建一个包含
x
中的命令 1000 次的映射”,则该解释有效。还有两件事:
您真的要添加那么多分号吗?拥有一款能够满足您
想要需求的软件,无论是否有文档记录,这不是很好吗?
为了完整起见,添加分号的方法是使用以下两个命令之一:
:%normal A;
:%s/$/;/