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)))
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)
必要なときに誤って呼び出さないようにします。
を使用できます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)))
M-x kill-matching-buffers
これにより、正規表現の入力を求められます。詳細については、ドキュメントを確認してください。