记录一系列操作,在需要的时候运行
例如给一个单词加 " ,可以分解为以下操作:
M-b 移动到词首 " M-f 移动到词尾 "
这种重复的操作往往需要经常执行,手动未免太没有效率。我们可以把这些操作制作成宏,然后运行这个宏
当然,这只是最简单的宏。结合正则表达式进行匹配,以宏进行操作,可以完成许多复杂的操作
表 25.14. Emacs 宏
开始录制 | C-x ( (M-x kmacro-start-macro) | F3 (M-x kmacro-start-macro-or-insert-counter) |
结束录制 | C-x ) (M-x kmacro-end-macro) | F4 (M-x kmacro-end-or-call-macro) |
播放 | C-x e (M-x kmacro-end-and-call-macro) |
与 剪切队列 类似,Emacs 中也有 宏队列 的概念: 当一个新的宏被定义,原有的宏并不消失,只是在宏队列中的位置被挤到后面。
C-x C-k
进入宏队列,以下的操作可以在宏队列中连续进行
表 25.15. Emacs 宏队列
基本操作 | ||
C-n | M-x kmacro-cycle-ring-next | 下翻 |
C-p | M-x kmacro-cycle-ring-previous | 上翻 |
C-d | M-x kmacro-delete-ring-head | 删除当前宏 |
C-k | M-x kmacro-end-or-call-macro-repeat | 运行当前宏 |
命名与保存 | ||
n (name) | M-x kmacro-name-last-macro | 命名 |
b | M-x kmacro-bind-to-key | 绑定 |
M-x insert-kbd-macro | 在缓冲区中插入宏定义 | |
宏编辑器 | ||
C-e | M-x kmacro-edit-macro | 编辑 |
e | M-x edit-kbd-macro | 编辑指定名称的宏 |
l | M-x kmacro-edit-lossage | |
询问执行 | ||
q | M-x kbd-macro-query | 在播放宏时,将进行询问确认 |
计数器 | ||
C-i | M-x kmacro-insert-counter | 将宏计数器的数值插入缓冲区 |
C-c | M-x kmacro-set-counter | 为宏计数器设置一个数值 |
C-a | M-x kmacro-add-counter | 给宏计数器添加一个前缀参数 |
C-f | M-x kmacro-set-format | 给宏计数器指定一个将要插入的特殊值 |