在Emacs中 - 如何杀死匹配regexp的缓冲区?
修改:
如何自动回答y
(kill-matching-buffers
询问我是否应该杀死修改后的缓冲区?)
这样的东西?
(defun bk-kill-buffers (bfrRgxp)
(interactive)
(kill-matching-buffers bfrRgxp)
[return])
答案 0 :(得分:13)
如何自动回答y(kill-matching-buffers询问我是否应该杀死修改后的缓冲区)?
kill-matching-buffers
调用kill-buffer-ask
来调用yes-or-no-p
。您可以暂时重新定义后者,但出于安全原因,我倾向于不这样做 - 杀死给定的缓冲区可能触发其他功能,需要提出是或否问题。
重新定义kill-buffer-ask
似乎更安全(或简单地复制和修改kill-matching-buffers
函数本身)。
(require 'cl)
(defun bk-kill-buffers (regexp)
"Kill buffers matching REGEXP without asking for confirmation."
(interactive "sKill buffers matching this regular expression: ")
(flet ((kill-buffer-ask (buffer) (kill-buffer buffer)))
(kill-matching-buffers regexp)))
答案 1 :(得分:3)
M-x kill-matching-buffers
这将提示正则表达式,请查看文档以获取详细信息。
答案 2 :(得分:0)
您可以使用kill-matching-buffers
。下面的代码有效地表现得好像kill-buffer
(在杀死之前没有询问)被调用而不是kill-buffer-ask
:
(defun kill-matching-buffers-just-do-it ()
"Kill buffers whose names match REGEXP, without asking."
(interactive)
(cl-letf (((symbol-function 'kill-buffer-ask) #'kill-buffer))
(call-interactively #'kill-matching-buffers)))
答案 3 :(得分:0)
对于Emacs版本> = 24,来自ELPA存储库的 kmb.el 库
使用命令kmb-kill-matching-buffers-no-ask
完成该操作。
它还提供命令kmb-delete-process-and-kill-buffer-no-ask
,
它会杀死当前的缓冲区(没有确认)。
我按如下方式绑定后一个命令:
(global-set-key (kbd "H-M-<delete>") 'kmb-delete-process-and-kill-buffer-no-ask)
所以我不会偶然称呼它,就在我需要的时候。