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

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

    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 给宏计数器指定一个将要插入的特殊值

  • 保存为文件,使用 M-x load-file 加载
  • 保存到配置文件中,启动时加载