我希望能夠將鍵盤宏保存在emacs中並以批處理模式重複應用到文件中。舉一個簡單的例子,我做了下面的文件paren-delete.el,它應該刪除所有括號及其內容。當我運行emacs --batch target.txt --load paren-delete.el時,似乎沒有任何改變。看起來只有第一個kbd函數能夠完成它應該做的事情,所以我不明白這個命令是如何工作的。以批處理模式運行emacs鍵盤宏
我知道最好避免使用鍵盤宏並在正確的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)