当前位置:  开发笔记 > 开发工具 > 正文

如何同时操作更多Emacs缓冲区?

如何解决《如何同时操作更多Emacs缓冲区?》经验,为你挑选了2个好方法。

我正在寻找相当于:bufdoEmacs 中的Vim命令.:bufdo接受一个参数 - 另一个命令 - 并在所有打开的缓冲区上执行命令.我还没有在Emacs中找到类似的功能.



1> Trey Jackson..:

根据您的命令,您可以执行以下操作:

M-: (mapc (lambda (b) (set-buffer b) (*command*)) (buffer-list))

但是,我有一种感觉,你想要的东西不那么lispy.看看键盘宏.即,决定你想做什么:

C-x (  C-x )
M-: (mapc (lambda (b) (set-buffer b) (kmacro-end-and-call-macro)) (buffer-list))

如果您使用它,您可能希望将最后一个部分定义为函数:

(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)))

注意:代码未经测试


可能最好使用"with-current-buffer",比如(缓冲区列表中的buf循环do(with-current-buffer buf )).

2> danielpoe..:

您也可以签出ibuffer,它允许您标记您喜欢的缓冲区m,然后您可以使用它执行某些操作E.其他常见的操作也可以,例如query-replaceQ.只需查看菜单或模式说明(C-h m)即可.

顺便说一句,类似的东西也可以来自dired,虽然它似乎没有给你一个eval命令.

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有