vim - 如何正确使用 vim 宏 - 488 Erro
问题描述
我正在尝试编写我的第一个宏,这给我带来了一些麻烦
,我基本上想把这个变成:
城市名称1
城市名称2
等等...
进入这个:
'cityName1'、
'cityName2'
等...
我将宏记录为:i'<Esc>A'<Esc>j0
,如果我执行@a
它工作正常,但是当我尝试类似:10@a
它时会给我一个'E488 Trailing Characters Error'
任何帮助将不胜感激,谢谢
解决方案
宏是一系列按键,意在被 Vim 逐字重复。
当您@a
在正常模式下执行操作时,Vim 会为您执行i
, then '
, then<Esc>
等,这一切都按预期工作,因为您处于正常模式并且您的宏以正常模式命令开始。
当您@a
在命令行模式下执行操作时,Vim 会执行与上述相同的操作(i
、 then'
等),但您处于命令行模式并且这些击键在该上下文中毫无意义。你基本上是在输入垃圾,Vim 正在尽最大努力理解它,但它失败了。
请注意,10
in10@a
表示“重播@a
10 次”,10
in:10@a
表示“@a
在第 10 行重播”。从您的问题来看,您是否想要其中一个并不会立即显而易见。
在正常模式下,如果您的意思是“重播@a
10 次”,请执行此操作:
10@a
或者,如果您的意思是“@a
在第 10 行重播”:
1OG@a
如果您更喜欢命令行模式,如果您的意思是“重播@a
10 次”,请执行此操作:
:normal 10@a
或者,如果您的意思是“@a
在第 10 行重播”:
:1Onormal @a
参见:help G
, :help :normal
, :help :range
, 更一般地, :help repeat
。
推荐阅读
- python - 如何计算 3 个时间序列的广义矩,即 3 个时间序列之间的 coskew 和 4 个时间序列之间的 cokurtosis 等
- node.js - node.js 中 https.get 的重试逻辑
- reactjs - 重构为 React 钩子时的身份验证侦听器
- python - 如何在不重新启动笔记本的情况下清除 jupyter 内存
- unity3d - Unity - 使用 GetRawTextureData 更改底层 RGB 字节而不复制
- angular - 具有相同名称/字段的角材料多个 mat-radio-group
- python - 驱动程序查找元素
- javascript - 要在对象推送中的 JSON 数组对象
- javascript - 从货币代码获取货币符号的 API 或 angularjs 服务
- spring-data-jpa - @DomainEvent 即使在回滚的情况下也会发布事件