Linux 如何使用vim在行列表上应用宏

Linux 如何使用vim在行列表上应用宏,linux,vim,macros,Linux,Vim,Macros,假设我想在第2、5、9行中应用存储在寄存器1上的宏,但不应用于中间的行。我看到你可以给出一个范围,但那不是我想要的。 我尝试了一些变体:2、5、9@1,但没有成功如果这些行有共同点,您可以使用:global和:normal命令: :g/foo/norm! @1 这稍微“更聪明”,但可能比: 2G@1 5G@1 9G@1 请参见:help:global和:help:normal在旁注中,您可以使用正则表达式选择宏将应用的行,这非常酷。但是,我仍然必须确保我的正则表达式确实选择了适当的行,在很多

假设我想在第2、5、9行中应用存储在寄存器1上的宏,但不应用于中间的行。我看到你可以给出一个范围,但那不是我想要的。
我尝试了一些变体:2、5、9@1,但没有成功

如果这些行有共同点,您可以使用
:global
:normal
命令:

:g/foo/norm! @1
这稍微“更聪明”,但可能比:

2G@1
5G@1
9G@1

请参见
:help:global
:help:normal

在旁注中,您可以使用正则表达式选择宏将应用的行,这非常酷。但是,我仍然必须确保我的正则表达式确实选择了适当的行,在很多情况下,仅仅写行号会更快…值得注意的是,编号的寄存器经常变化,因此您可能希望使用小写字母寄存器。e、 g.
“q
。有关更多信息,请参见
:h quote1
。感谢您的说明,编号寄存器的确是一个错误的选择!是的,正如我在评论中所说,问题是确保regex没有不良副作用,您需要花费一些时间”测试”“是的。当我只有几行的时候,只列出行数会更快、更少出错。。。但是,如果你有敏捷的手指,不介意一点非常简单的vim脚本,你可以使用类似于
:对于[2,5,9]中的l,exe l“norm@1”| endfo
。它确实有效!我希望有更简洁的东西,但这已经足够好了!谢谢