繁体   English   中英

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

[英]How do I answer y automatically (kill-matching-buffers asks if I should kill a modified buffer)?

在Emacs中-如何杀死与正则表达式匹配的缓冲区?

编辑

我如何自动回答ykill-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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM