宏(macro)批量重复执行一组操作
-
宏的主要作用高效的完成同样的一组操作,比如批量插入、批量删除、批量修改。
-
宏的使用
- 普通模式下启动宏
# 1. 录制宏 (1) 普通模式下按q,之后跟上宏名(也就是要使用的寄存器名,可以为a-z,用寄存器来存储宏操作),就开始录制了; (2) 一组操作,比如编辑文本ing... (3) 普通模式下按q,停止录制。
# 使用(回放)宏 # 方法1:命令模式下使用,结合可视模式 (1) 选中要批量操作的文本区域,比如用可视模式选中; (2) 再按:进入命令模式,之后输入normal @宏名,回车完成批量操作。 # 方法2:普通模式下使用 @宏名
和其他命令一样,可以在"@宏名"命令前加一个计数,从而多次执行该宏。
- 宏是在普通模式下执行的,所以命令模式下启动宏需要加上
normal
关键字,即normal qa
-
向已经录制好的宏里面追加其他操作
在一个已经录制好的宏定义中添加更多的操作,方法和在一个已经存在的寄存器里追加内容一样,将原来小写的宏名变成大写。比如原来是qa
开始录制的宏,现在使用qA
向宏a
中追加操作。 -
拷贝宏
:let @z = @a
将寄存器a
中存储的宏对应的操作拷贝给寄存器z
。这样使用@z
会和使用@a
一样。这样的好处是可以将常用且有用的宏移动到字母表的末尾,以防不小心被替换掉了。 -
命令模式下执行普通模式的指令加上
normal
# 格式 normal 指令组合
# 举例:以上面批量为链接插入双引号为例 (1) 选中文本,一般用可视模式选择; (2) 选择好文本之后,按:再进入命令模式; (3) '<,'>normal I" (4) '<,'>normal A"
-
插件完成宏的一些操作
-
更多宏的内容可参考:
https://github.com/wsdjeg/Learn-Vim_zh_cn/blob/master/ch09_macros.md
https://github.com/iggredible/Learn-Vim/blob/master/ch09_macros.md
在编辑文本时,要乐于发现重复性的操作。对于重复性行为,通过执行点命令或宏命令提高效率。