Emacs 的键盘宏
如何使用键盘宏
一般来说,我们按下 <F3> 开始录制键盘宏,然后进行相应的操作,按下 <F4> 录制结束。然后按下 <F4> 执行录制的操作。 如果想执行多次,可以这样:
C-u <times> F4
上面的 F4 可以替换为 C-x e 它们的效果是一样的。
例如,我有个需求是处理下面的几个文本:
aa bb cc dd ==> "aa", "b", "cc", "dd"
或者自动生成这个:
第 1 章
第 2 章
第 3 章
第 4 章
第 5 章
我写了一个函数,能够根据键盘宏来生成上面的序列:
(defun auto-sequence (format start end)
(interactive "sSequence format: \nnEnter start number: \nnEnter end number: ")
(progn
(kmacro-set-format format)
(kmacro-set-counter start)
(while (< start (+ 1 end))
(execute-kbd-macro (read-kbd-macro "<f3> RET"))
(setq start (+ 1 start)))
))
例如, sequence format 我们可以输入 "第 %d 章",start number 输入 1,end number 输入 5。
类似这种有相同模式的操作,使用键盘宏处理起来非常的简单。
将键盘宏保存
有时候,我们需要经常做某个操作,希望下次能复用这个键盘宏,我们就可以把定义的宏进行保存。 在上面的操作完成以后,我们就可以调用 M-x name-last-kbd-macro 这个命令了。在命名完以后,你其实就可以当成命令来调用这个宏名了。当然如果长期使用需要保存到配置文件中。 例如,这里我起个名叫 test-marco 。
然后打开你的 Emacs 的配置文件,可以使 init.el 或者其他的位置。然后执行 M-x insert-kbd-macro 。
设置快捷键
在使用命令方式调用的时候如果嫌麻烦,可以为这个宏设置一个快捷键。
(global-set-key (kbd "C-cm") 'test-marco)
下次,我们直接按 C-c m 就可以了。
最后说明
如果你使用过 Vim,你可能感觉这个键盘宏和 Vim 的差别不是很大。事实远不是这样,在 Emacs 中的宏, 更加的强大。你可以记录除了文本操作外的其他操作,只要你能想的到的东西。例如,打开文件,查找,替换,剪切等等。