我使用C-x C-f /path/to/files/*.txt
在emacs中打开了大量文件
我还创建并保存了一个名为my-macro
现在我想在所有打开的缓冲区上运行这个宏。我怎么能在emacs中这样做?
我想提一下,我是emacs的新手,也不了解emacs lisp代码,但可以用C ++编写代码。 因此,如果有人建议或提供一些lisp代码,请通过撰写评论来支持我,以便我可以根据需要对其进行修改。
编辑1:
我试过通过 m 标记所有打开的缓冲区然后 E 然后Eval(form): my-macro
但得到以下错误
符号作为变量的值为void:my-macro
答案 0 :(得分:1)
错误给你一个线索:“符号的值作为变量是无效的”
my-macro不是包含值的变量。您需要引用宏:'my-macro
(或等效的(quote my-macro)
)
如果你真的想在所有缓冲区中执行宏(注意像*Messages*
这样的缓冲区),这将是一个编程的替代方案
(defun execute-my-macro-in-all-buffers ()
(interactive)
(dolist (buffer (buffer-list))
(with-current-buffer buffer
(if (and buffer-file-name
(y-or-n-p (format "Execute macro in %s? " buffer-file-name)))
(execute-kbd-macro 'my-macro)))))