如何同时操作更多 Emacs 缓冲区?
我正在寻找 Emacs 中与 :bufdo
Vim 命令等效的命令。 :bufdo
接受一个参数 - 另一个命令 - 并在所有打开的缓冲区上执行该命令。 我还没有在 Emacs 中找到类似的功能。
I am looking for an equivalent of the :bufdo
Vim command in Emacs. :bufdo
takes an argument - another command - and executes the command on all open buffers. I have not yet found a similar feature in Emacs.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
根据你的命令是什么,你可以这样做:
但是,我有一种感觉,你想要一些不那么口齿不清的东西。 查看键盘宏。 也就是说,决定您想要做什么:
如果您经常使用最后一部分,您可能希望将其定义为函数:
注意:代码未经测试
Depending on what your command is, you can do:
But, I have a feeling you want something not so lispy. Take a look at keyboard macros. Namely, decide what you want to do:
You'd probably want to define that last part as a function if you use it much:
Note: code is untested
您还可以查看 ibuffer,它允许您使用
m
然后你可以用E
对其执行一些操作。 还可以使用其他常见操作,例如Q
上的query-replace
。 只需查看菜单或模式说明 (Ch m
)。顺便说一句,类似的事情也可以从 dired 中实现,尽管它似乎没有给你一个
eval
命令。You can also checkout ibuffer, it allows you to mark buffers you like to operate on with
m
and then you can execute something on it withE
. Other common operations are also available, e.g.query-replace
onQ
. Just check out the menu or the mode description (C-h m
).BTW, similar things are also possible from dired, although it doesn't seem to give you an
eval
command.看一下缓冲区列表(函数)。 它返回所有打开的缓冲区(BUFFER 对象)的列表。 有关简单示例,请参阅手册将其与 mapcar 一起使用(它对列表的每个元素进行操作,并累积结果)。 您可能还会发现 set-buffer 很有用,它可以通过 Emacs Lisp 以编程方式设置当前缓冲区。
Take a look at buffer-list (function). It returns a list of all the open buffers (BUFFER objects). See the manual for a simple example of using it with mapcar (which operates on every element of the list, and accumulates the results). You would probably also find set-buffer, which programatically sets the current buffer from Emacs Lisp, useful.