[英]How do I answer y automatically (kill-matching-buffers asks if I should kill a modified buffer)?
在Emacs中-如何杀死与正则表达式匹配的缓冲区?
编辑 :
我如何自动回答y
( kill-matching-buffers
询问是否应该杀死修改后的缓冲区)?
像这样吗
(defun bk-kill-buffers (bfrRgxp)
(interactive)
(kill-matching-buffers bfrRgxp)
[return])
我如何自动回答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)))
M-x kill-matching-buffers
这将提示您输入正则表达式,请查看文档以获取详细信息。
您可以使用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)))
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)
这样我就不会在需要的时候意外地调用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.