如何在我的Emacs中清空所有的“buffers”?

7
有没有一个命令可以在我的emacs中杀死所有缓冲区?而不是让我一个个地使用“Ctrl-k”直到没有更多的缓冲区?谢谢。

快速的hackish方法是使用键盘宏。C-x C-( C-x C-k <ENTER> C-x C-) C-u 0 <f4>,然后过一会儿按下C-g,因为它会反复地杀死scratch缓冲区。 - Bwmat
4个回答

15

M-x ibuffer RET
tDy

我强烈建议将C-xC-b绑定到ibuffer,作为默认绑定的替代品:

(global-set-key (kbd "C-x C-b") 'ibuffer)

我也将我的<menu>键绑定到了ibuffer,因为我经常使用它。
注意:在常规的list-buffers中,您可以使用C-kx来标记和删除缓冲区,但我认为每个人都应该真正使用ibuffer

11
我正在使用这个函数来关闭Emacs中的所有缓冲区。

我正在使用这个函数来杀掉Emacs中的所有缓冲区

(defun nuke-all-buffers ()
  (interactive)
  (mapcar 'kill-buffer (buffer-list))
  (delete-other-windows))

(global-set-key (kbd "C-x K") 'nuke-all-buffers)

对我来说工作得很好 :-)


3
你可以直接使用 'kill-buffer 表示 (lambda (x) (kill-buffer x)) - Sean
我们可以在终端外部调用它,而不是在emacs-deamon中吗? - alper

1

虽然有些hack,但可以实现你想要的功能:

(defun my-kill-everything ()
  (interactive)
  (dolist (cur (buffer-list))
    (kill-buffer cur)))

请注意,Emacs始终需要至少一个缓冲区,因此您最终会再次得到一个空的scratch缓冲区。(是的,这个命令也会杀死像minibuffer这样的东西,但它将被恢复。正如我所写的:高度hack-ish。)

0
在Doom Emacs中,还有一个名为doom/kill-all-buffers的函数,默认绑定到SPC q FSPC b K

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接