2012-06-07 4 views
6

In Emacs - wie kann ich Puffer mit regulärer Ausdruck zu töten?Wie antworte ich automatisch? (Kill-matching-buffers fragt, ob ich einen modifizierten Puffer löschen soll)?

bearbeiten:

Wie beantworte ich y automatisch (kill-matching-buffers fragt, ob ich einen modifizierten Puffer töten sollte)?

So ähnlich?

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

Warum SO verwenden, wenn Google genug ist? –

+0

Ich habe keine integrierte Lösung erwartet. – Adobe

+0

@LucaMartini: jetzt mit dem Bearbeiten ist es weniger trivial. – Adobe

Antwort

10

Wie antworte ich automatisch? (Kill-matching-buffers fragt, ob ich einen modifizierten Puffer löschen soll)?

kill-matching-buffers nennt kill-buffer-ask die yes-or-no-p nennt. Sie könnten letzteres vorübergehend neu definieren, aber aus Sicherheitsgründen bin ich geneigt, das nicht zu tun - das Töten eines bestimmten Puffers könnte andere Funktionalität auslösen, die eine Ja-oder-Nein-Frage stellen muss.

Neudefinition kill-buffer-ask scheint eine sicherere Wette (oder einfaches Kopieren und Modifizieren der kill-matching-buffers Funktion selbst).

(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))) 
3
M-x kill-matching-buffers 

Dies wird für einen regulären Ausdruck dazu veranlassen, Details in der Dokumentation zu überprüfen.

+0

Das OP kennt diese Funktion bereits. Sie müssen wissen, wie die Ja/Nein-Eingabeaufforderung nach dem Aufruf dieses Fn übersprungen werden kann. –

0

Sie können kill-matching-buffers verwenden.

(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))) 
0

Für Emacs-Version> = 24, die kmb.el Bibliothek von ELPA Repository tut genau das mit: Code unten, als ob kill-buffer effektiv verhält (was nicht fragt vor dem Erlegen) anstelle von kill-buffer-ask genannt der Befehl kmb-kill-matching-buffers-no-ask.

Es stellt auch den Befehl , , die den aktuellen Puffer (ohne Bestätigung) tötet.

Ich binde letzteren Befehl wie folgt:

(global-set-key (kbd "H-M-<delete>") 'kmb-delete-process-and-kill-buffer-no-ask) 

, so dass ich es nicht accidentaly nennen, nur wenn ich es brauche.

Verwandte Themen