我正在寻找相当于:bufdoEmacs 中的Vim命令.:bufdo接受一个参数 - 另一个命令 - 并在所有打开的缓冲区上执行命令.我还没有在Emacs中找到类似的功能.
根据您的命令,您可以执行以下操作:
M-: (mapc (lambda (b) (set-buffer b) (*command*)) (buffer-list))
Run Code Online (Sandbox Code Playgroud)
但是,我有一种感觉,你想要的东西不那么lispy.看看键盘宏.即,决定你想做什么:
C-x ( <do-your-command> C-x )
M-: (mapc (lambda (b) (set-buffer b) (kmacro-end-and-call-macro)) (buffer-list))
Run Code Online (Sandbox Code Playgroud)
如果您使用它,您可能希望将最后一个部分定义为函数:
(defun bufdo ()
"execute last macro on all buffers, ala bufdo from vi"
(interactive)
(mapc (lambda (b)
(with-current-buffer b
(kmacro-end-and-call-macro)))
(buffer-list)))
Run Code Online (Sandbox Code Playgroud)
注意:代码未经测试
| 归档时间: |
|
| 查看次数: |
408 次 |
| 最近记录: |