学会组合只是 vim 入门,虽然是入门也非常博大精深了,像有追求的 vimer 总是在探索更精简的组合命令,探索如何用更少的按键实现某种操作,再把更精简的组合命令练成肌肉记忆。
学会重复命令可以让你的 vim 水平再上一层,学会重复命令才能你再也不想打开别的编辑器(好像仅仅学会组合命令也能达到同样的效果)。
移动命令
-
;
,重复上一次f
、F
、t
、T
命令 -
,
,逆向重复上一次f
、F
、t
、T
命令 -
n
,重复上一次/
、?
搜索命令 -
N
,逆向重复上一次/
、?
搜索命令
操作命令
-
.
,重复上一次操作,主要用来重复组合命令,毕竟组合命令按键比较多呀。 -
daw..
,删除三个单词,比dawdawdaw
短多了,当然还有更短的3daw
,但.
的好处在于你不用一开始就考虑好删几个单词,只用一直.
到不需要删为止。 -
A;<esc>j.j.jj.
,添加 4 个行尾分号,最后一个分号按两次j
,可以隔一行再添加分号。这是「移动点重复」模式,在「重复执行非常细小的操作,而且重复过程中可能需要随时调整,重复次数也不多」的场景下可以使用这个模式。像这类非常细微的日常重复也被简化到极致,这就是 vim 的进阶玩法。一般情况下你的编辑工作应该是从头到尾都用这个模式完成的。
宏,录制键盘
-
qqngUiwq
,第一个 q 用来启动宏录制,第二个 q 是宏的名称,然后是录制的内容,最后用 q 停止录制。录制「搜索下一项然后大写」并储存到名为 q 的宏,宏相当于把移动命令和操作命令放在一起重复执行了,在大型的、确定的、无干扰的情况下使用,比如复杂的排版格式重构。 -
@q
执行一次名为 q 的宏。在录制这个宏之前已经执行过/abc
命令了,所以在执行时会搜索包含 abc 的单词然后大写。 -
@@
,意思是执行上次执行过的宏,也就是 q 宏。这样你就可以按着@@
不松来连续多次执行宏了。 -
99@q
或99@@
,可以加上宏的执行次数,这是执行 99 次。
大招来了。
-
qqqqqngUiw@qq
,根据上面的知识可以知道前面三个 q 意思是清空 q 宏,然后正常录制,最后在录制结尾处调用 q 宏,因为这时 q 宏是空的,所以这最后一步无效果,现在结束录制以后 q 宏就有内容了,想想@q
执行宏会是什么效果。所以递归宏就诞生了,吓得都变成粗体字了。