如何自动回答y(kill-matching-buffers询问我是否应该杀死修改后的缓冲区)?

时间:2012-06-07 10:21:35

标签: emacs buffer

在Emacs中 - 如何杀死匹配regexp的缓冲区?

修改

如何自动回答ykill-matching-buffers询问我是否应该杀死修改后的缓冲区?)

这样的东西?

(defun bk-kill-buffers (bfrRgxp)
  (interactive)
  (kill-matching-buffers bfrRgxp)
  [return])

4 个答案:

答案 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)

所以我不会偶然称呼它,就在我需要的时候。