我有一个包含id行组的文件。我需要经历并为每组ID添加相同的模式组。这是我的意思的一个例子:
randomstring#morerandom
randomstring#morerandom
randomstring#morerandom
randomstring#morerandom
randomstring#morerandom
randomstring#morerandom
# pattern to add
thingA;
thingB;
thingC;
假设 randomstrings 实际上是随机的,可能有数百条这些线,并且这些组的大小相同但可能大于3行。我想在每组行的#之后插入三个的东西。这就是输出的样子:
randomstring#thingA;morerandom
randomstring#thingB;morerandom
randomstring#thingC;morerandom
randomstring#thingA;morerandom
randomstring#thingB;morerandom
randomstring#thingC;morerandom
我最初的计划是将要添加的东西放入注册a,b,c并创建一个从一个组的开头开始的宏,在#之后插入每个东西,并在下一个组的乞讨处结束。 ^f#"apj^f#"bpj^f#"cpjj^
我尝试通过突出显示我想要运行的区域来运行此宏,然后执行:normal @q
。然而,这确实很奇怪,似乎每行都添加了多个东西。
只是用一个数字运行我的宏并猜测文件的长度是最好的方法吗?即10@q
?
另外,是否有更好的方法将事物拖入连续的寄存器中,而不是手动拉动每个寄存器?
答案 0 :(得分:0)
确保每个区块下面都有一个空白行(包括最后一个),就像您的样本一样;然后你可以运行这个:
:'<,'>g/\n\n/normal 2k@q
这应该在每个块的第一行上运行宏,仅限于视觉选择。
或者,删除你的视觉块,将其粘贴到一个新的缓冲区,然后只使用正常的宏循环(不受视觉选择限制)来转换,然后将其放回原始缓冲区:
d:enew<CR>Pqrqqr@q@rq@rggdG:bd!<CR>P
(如果我没有搞砸到某个地方)