记录一系列操作,在需要的时候运行

例如给一个单词加 “ ,可以分解为以下操作:

  1. M-b 移动到词首
  2. "
  3. M-f 移动到词尾
  4. "

这种重复的操作往往需要经常执行,手动未免太没有效率。我们可以把这些操作制作成宏,然后运行这个宏

当然,这只是最简单的宏。结合正则表达式进行匹配,以宏进行操作,可以完成许多复杂的操作

定义与运行

表 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-nM-x kmacro-cycle-ring-next下翻
C-pM-x kmacro-cycle-ring-previous上翻
C-dM-x kmacro-delete-ring-head删除当前宏
C-kM-x kmacro-end-or-call-macro-repeat运行当前宏
命名与保存
n (name)M-x kmacro-name-last-macro命名
bM-x kmacro-bind-to-key绑定
 M-x insert-kbd-macro在缓冲区中插入宏定义
宏编辑器
C-eM-x kmacro-edit-macro编辑
eM-x edit-kbd-macro编辑指定名称的宏
lM-x kmacro-edit-lossage 
询问执行
qM-x kbd-macro-query在播放宏时,将进行询问确认
计数器
C-iM-x kmacro-insert-counter将宏计数器的数值插入缓冲区
C-cM-x kmacro-set-counter为宏计数器设置一个数值
C-aM-x kmacro-add-counter给宏计数器添加一个前缀参数
C-fM-x kmacro-set-format给宏计数器指定一个将要插入的特殊值
  • 保存为文件,使用 M-x load-file 加载
  • 保存到配置文件中,启动时加载