利用键盘宏(Macro),可以录制一组命令,然后重复执行。
假设需要对以下文字,进行下列处理:
tansen is the singer daswant is the painter birbal is the wazir
- 将每行的首字符大写;
- 将"is"改为"was";
- 在每行结尾增加 "in Akbar's court."
显然,手工重复完成这些操作是相当繁琐和费时的,而使用宏则会非常高效。
录制宏
- 进入常规模式;
- 将光标移动到第一行的第一个字母上;
- 执行
qa
命令,开始录制宏a; - 执行
gUl
命令,将首字母转换为大写; - 执行
w
命令,移动到下一单词; - 执行
cw
命令,修改单词; - 输入“was”;
- 点击Esc键,返回常规模式;
- 执行
A
命令,在行尾添加文字; - 输入“in Akbar's court”;
- 点击Esc键,返回常规模式;
- 执行
q
命令,完成录制宏;
查看宏
宏录制的命令序列,将被存储在指定的寄存器(Regists)中。使用以下命令,可以查看宏的内容:
:register a
执行宏
在完成一行的修改并录制宏后,就可以使用宏快速完成其它行的处理了:
- 执行
j
命令,移动到下一行; - 执行
0
命令,移动到首字母; - 执行
@a
命令,执行宏a;
我们还可以在执行命令前加上数字,比如3@a
,来告诉vi执行几次宏。
删除宏
通过重新录制宏,可以覆盖当前宏的内容。例如,使用qaq
命令,将清空宏a的内容;使用以下命令,也可以将宏a置为空:
:let @a = ''
命令小结
q | 录制宏 | :help q |
@ | 执行宏 | :help @ |