如何正确使用vim宏-488 Erro

问题描述

我正在尝试编写第一个宏,这给我带来了麻烦
我基本上想把这个转过来:

cityName1
cityName2
等等...

对此:

'cityName1',
'cityName2',
等等...

我将宏记录为:i'<Esc>A'<Esc>j0,如果我以@a执行,则可以正常工作,但是当我尝试类似:10@a的操作时,它给了我'E488尾随字符错误'

感谢您的任何帮助

解决方法

宏是一系列击键,Vim会在字面上重复这些操作。

在普通模式下执行@a时,Vim为您执行i,然后',然后<Esc>等,所有这些都按预期工作,因为在正常模式下,您的宏将从正常模式命令开始。

在命令行模式下执行@a时,Vim会执行与上述相同的操作({i,然后是'等),但是您处于命令行模式,并且在这种情况下,这些击键是没有意义的。您基本上是在输入垃圾,Vim尽最大努力弄清了垃圾,但是它失败了。

请注意,10中的10@a表示“重放@a 10次”,10中的:10@a表示“重放@a第10行”。从您的问题中不能立即看出您是否想要一个。

在正常模式下,如果您的意思是“重播@a 10次”,请执行以下操作:

10@a

或者,如果您的意思是“在第10行重播@a”:

1OG@a

如果您更喜欢命令行模式,则表示“重播@a 10次”:

:normal 10@a

或者,如果您的意思是“在第10行重播@a”:

:1Onormal @a

请参见:help G:help :normal:help :range,更常见的是:help repeat