Vim 技巧 - 重复上次的 Ex 命令
.
命令可以重复上次的普通模式命令。然而,如果想重复上次的 Ex 命令的话,我们得使用 @:
才行。知道如何回退上次的命令永远是有价值的,因此本节也会讨论这一点。
我们知道如何用 .
命令重复上次的修改。但是,.
命令不会重复由 Vim 命令行中做出的修改。作为替代,我们可以用 @:
来重复上次的 Ex 命令(参见 :h @:)。
例如,下面两条命令在遍历缓冲区列表的条目时非常有用,用 :bn[ext]
可以在列表中逐项正向移动,而 :bp[revious]
命令则进行反向移动。假设缓冲区列表中有大约十几个条目,而我们打算逐个查看每个缓冲区,因此可以输入一次下面的命令:
➾:bnext
然后再用 @:
重复执行此命令。留意一下这和运行宏的相似之处,另外也需注意,:
寄存器总是保存着最后执行的命令行命令(参见:h quote_:)。在运行过一次 @:
后,后面就可以用 @@
命令来重复它。
假设我们按得忘乎所以,执行了太多次 @:
命令以致于错过了目标。那要怎样才能改变方向往回跳呢?当然,我们可以执行:bprevious
命令,但是想想如果以后再次执行 @:
命令会发生什么?没错,它会反向遍历缓冲区列表,恰恰与最初的方向相反。这会把人搞糊涂的。
在这种情况下,更好的选择是使用 <C-o>
命令。每次运行 :bnext
命令(或用 @:
命令重复执行它)时,它都会在跳转列表中添加一条记录,而 <C-o>
命令会回到跳转列表的上条记录。
我们可以执行一次 :bnext
,然后用 @:
重复任意多次;如果想往回跳,就用<C-o>
命令。这样一来,如果接下来还想继续正向遍历缓冲区列表,就可以继续用 @:
命令。请牢记技巧口诀:执行、重复、回退。
Vim 为几乎所有功能都提供了相应的 Ex 命令。虽然用 @:
总是可以重复上一条 Ex 命令,但如果想回退其影响,却没有这种直截了当的方式。用本节提到的 <C-o>
命令,只能够回退 :next
、:tnext
等命令的执行结果;然而对于那些用来编辑文本的 Ex 命令,则要用 u
键才能撤销其影响。
- 01
- 搭配 Jenkins 实现自动化打包微前端多个项目09-15
- 02
- 自动化打包微前端多个项目09-15
- 03
- el-upload 直传阿里 oss 并且显示自带进度条和视频回显封面图06-05