在所有打开的缓冲区上执行命令[重复]

问题描述 投票:1回答:1

我已经使用C-x C-f /path/to/files/*.txt在emacs中打开了很多文件另外,我还创建了一个键盘宏并将其保存为my-macro

现在,我想在所有打开的缓冲区上运行此宏。如何在emacs中执行此操作?

我想提到我是emacs的新手,也不了解emacs lisp代码,但是可以用C ++很好地编写代码。因此,如果有人提出建议或给出一些轻率的代码,请通过写评论也对我有利,以便我可以根据需要进行修改。

编辑1:我尝试通过先按[[m然后按[[E然后按Eval(form): my-macro但是出现以下错误

符号的变量值无效:my-macro
variables emacs quote
1个回答
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)))))

© www.soinside.com 2019 - 2024. All rights reserved.