首页 > 解决方案 > 如何正确使用 vim 宏 - 488 Erro

问题描述

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

城市名称1
城市名称2
等等...

进入这个:

'cityName1'、
'cityName2'
等...

我将宏记录为:i'<Esc>A'<Esc>j0,如果我执行@a它工作正常,但是当我尝试类似:10@a它时会给我一个'E488 Trailing Characters Error'

任何帮助将不胜感激,谢谢

标签: vimmacros

解决方案


宏是一系列按键,意在被 Vim 逐字重复。

当您@a在正常模式下执行操作时,Vim 会为您执行i, then ', then<Esc>等,这一切都按预期工作,因为您处于正常模式并且您的宏以正常模式命令开始。

当您@a在命令行模式下执行操作时,Vim 会执行与上述相同的操作(i、 then'等),但您处于命令行模式并且这些击键在该上下文中毫无意义。你基本上是在输入垃圾,Vim 正在尽最大努力理解它,但它失败了。

请注意,10in10@a表示“重播@a10 次”,10in:10@a表示“@a在第 10 行重播”。从您的问题来看,您是否想要其中一个并不会立即显而易见。

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

10@a

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

1OG@a

如果您更喜欢命令行模式,如果您的意思是“重播@a10 次”,请执行此操作:

:normal 10@a

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

:1Onormal @a

参见:help G, :help :normal, :help :range, 更一般地, :help repeat


推荐阅读