我希望能够在 emacs 中保存键盘宏,并以批处理模式将其重复应用于文件。举一个简单的例子,我制作了以下文件 paren-delete.el 应该删除所有括号及其内容。当我运行 emacs --batch target.txt --load paren-delete.el 时,似乎没有任何改变。似乎只有第一个 kbd 函数完成了它应该做的事情,所以很明显我不明白该命令是如何工作的。
我知道最好避免使用键盘宏并用适当的 elisp 编写我的函数,但我更喜欢快速而肮脏的解决方案,而且我觉得我已经接近了。
(kbd "M-x load-library kmacro")
(fset 'delete-paren
(lambda (&optional arg) "Keyboard macro." (interactive "p")
(kmacro-exec-ring-item (quote ("^S(^M^B^@^[^N^W" 0 "%d")) arg)))
(start-kbd-macro nil)
(kbd "M-x delete-paren")
(end-kbd-macro)
(kbd "C-u 0 C-x e")
(save-buffer)