8

Emacsで-正規表現に一致するバッファを強制終了するにはどうすればよいですか?

編集

y自動的に応答kill-matching-buffersするにはどうすればよいですか(変更されたバッファーを強制終了するかどうかを尋ねられます)?

このようなもの?

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

4 に答える 4

14

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)))
于 2012-06-07T11:49:04.400 に答える
1

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)

必要なときに誤って呼び出さないようにします。

于 2017-06-02T04:51:52.853 に答える
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)))
于 2017-05-22T18:20:11.713 に答える
-1
M-x kill-matching-buffers

これにより、正規表現の入力を求められます。詳細については、ドキュメントを確認してください。

于 2012-06-07T10:32:29.763 に答える