使用 vim 时无意间触碰到 q 键,左下角出现 "recording" 这个标识,觉得好奇,遂在网上查了一下,然后这是 vim 的一个强大功能。他可以录制一个宏(Macro),在开始记录后,会记录你所有的键盘输入,包括在 insert 模式下的输入、正常模式下使用的各种命令等。
具体使用:
第一步:在正常模式下(非 insert 模式、非 visual 模式)按下 q 键盘
第二步:选择 a-z 或 0-9 中任意一个作为缓冲器的名字,准备开始录制宏
第三步:正常的操作,此次所有的操作都会被记录在上一步中定义的缓冲器中
第四步:在非 insert 模式下输入 q 停止宏的录制
第五步:使用 @ + 第二步中定义的缓冲器的名字即可。
例如想把下面的文字
- line1
- line-2
- line3-1
- l4
变成如下的文字
- System.out.println(line1);
- System.out.println(line1);
- System.out.println(line-2);
- System.out.println(line3-1);
- System.out.println(L4);
观察可以发现他们的规律,在每行文字的开头添加 "System.out.println(",结尾添加 ");" 就变成下面的信息了。下面简单介绍一下如何使用 recording 来完成这样的操作。
首先把光标移动 line1 上,输入 qt,准备开始录制,缓冲器的名字为 t,录制的动作为:shift + ^ 回到行首、按下 i 键进入 insert 模式、输入 "System.out.println("、按下 esc 键回到正常模式、shift + $ 回到行尾部、按下 i 键进入 insert 模式、输入 ");" 按下 esc 键回到正常模式,按下 q 停止录制。然后把光标移动到下面一行的任意位置输入 @ + t 即可。
recording 还可以和查询结合起来使用,例如想把一个文件中含有特定字符串的行注释,可以通过这样的宏来实现。在正常模式下输入 / search string + enter、shift + ^、i、#、esc、shift + $。
让定制的宏自动执行多次的方法是先输入一个数字,然后在输入 @ + 缓冲器的名字。 例如 ,表示执行 100 次。
来源: http://www.bubuko.com/infodetail-1993406.html