Manchmal hat meine Pufferliste mehr als 10 dired Fenster, und ich benutze buffer-menu
am Ende, um alle manuell zu markieren und zu töten. Gibt es eine schnellere Möglichkeit, alle geöffneten Fenster zu schließen?
Manchmal hat meine Pufferliste mehr als 10 dired Fenster, und ich benutze buffer-menu
am Ende, um alle manuell zu markieren und zu töten. Gibt es eine schnellere Möglichkeit, alle geöffneten Fenster zu schließen?
Antworten:
Sie könnten Folgendes tun:
M-x
ibuffer
* /
um Puffer im dired-Modus zu markieren.
D
um sie zu löschen.
C-x C-b
zu ibuffer
.
t
( dired-toggle-marks
) drücken , um alle zu markieren (falls noch keiner markiert war).
dired-toggle-marks
ist der Name des Befehls dired . Durch Drücken von t
werden auch alle Markierungen in ibuffer umgeschaltet, jedoch sind die nicht gerichteten Puffer in der Regel zahlreicher als die gerichteten Puffer, sodass das Umschalten in diesem Kontext häufig keinen Sinn ergibt.
Anstatt eine weitere Funktion zum Löschen aller dired
Puffer hinzuzufügen , sollten Sie die Filtergruppen in nutzen ibuffer
, um den Puffer nach vielen Bedingungen zu gruppieren.
Hier ist ein Beispiel zum Festlegen von Filtergruppen:
(setq-default ibuffer-saved-filter-groups
`(("Default"
;; I create a group call Dired, which contains all buffer in dired-mode
("Dired" (mode . dired-mode))
("Temporary" (name . "\*.*\*"))
)))
Dann C-x C-b
öffne das ibuffer
Fenster und du siehst so etwas:
Bewegen Sie den Cursor auf [ Dired ]
(mit M-p
, M-n
) und drücken Sie d
, um als Löschen zu markieren
dann drücken, x
um auszuführen.
Ich bevorzuge diesen Weg, weil ich nicht darüber nachdenken muss, wie ich meinen Schlüssel an die neue Funktion binden soll, und meine Puffer besser organisiert sind.
ibuffer
nach der Auswertung Ihres Codes zum ersten Mal startete . Ich musste / R
zuschlagen ibuffer-switch-to-saved-filter-groups
, um die Gruppen zu bekommen.
(ibuffer-switch-to-saved-filter-groups "Default")
Sie können diese Codezeile in einen Puffer-Hook einfügen. Der Name der Filtergruppe sollte geändert werden, wenn dies nicht der Fall istDefault
Haben Sie viele Dired-Puffer, weil Sie alle an einem Punkt haben wollten ? IOW, haben Sie wollen jeden von ihnen als separate Puffer schaffen?
Andernfalls ist die Lösung einfach: Weisen Sie Dired an, einen vorhandenen Dired-Puffer wiederzuverwenden, wenn Sie auf RET
einen Verzeichnisnamen klicken, um ihn in Dired zu öffnen.
So geht's:
Bibliothek laden Dired + ( dired+.el
):
(require 'dired+)
Weisen Sie Dired an, Dired-Puffer wiederzuverwenden:
(diredp-toggle-find-file-reuse-dir 1)
RET
Dies hat find-alternate-file
zur Folge, dass beim Klicken (oder Klicken mit der Maus) auf ein Verzeichnis in Dired der ursprüngliche Dired-Puffer durch den neuen ersetzt (gelöscht) wird.
Sie können dieses Verhalten jederzeit mit C-M-R
(aka C-M-S-r
) in Dired umschalten.
Sie können auch verwenden helm-mini
:
M-x helm-mini
.*Di
(Teilwort für Dired
, keine weitere Eingabe erforderlich). Während der Eingabe werden die Puffer schrittweise verkleinert. Jetzt ist nur noch Dired
Puffer übrig. Drücken Sie M-a
, um alle zu markieren.TAB
zum Umschalten auf Aktionsmenü und drücken Sie K
Aktion auszuwählen Kill buffer(s)
.RET
, um die Aktion auszuführen.Das Gute daran helm-mini
ist, dass es normale Emacs ersetzen kann C-x b
, sodass Sie nicht zwei Tastenzuordnungen verwenden müssen, eine zum Wechseln des Puffers und eine für einen tatsächlichen Puffermanager. helm-mini
ist alles in einem. Lesen Sie mehr in meinem Helm-Mini-Guide .
helm-mini
kann auch Fuzzy-Match-Buffer und das Öffnen mehrerer Buffer durch Markieren mit C-SPC
oder M-a
(stehen für M ark a ll). Sie können auch eingrenzen, um bestimmte Zeichenfolgen zu puffern, indem Sie sie @
vor einem Muster anhängen. Dies @test
bedeutet beispielsweise, dass Sie nur Puffer auswählen, die die Zeichenfolge "test" enthalten.
Ich würde so etwas versuchen:
(require 'dash)
(defun my-kill-dired-buffers ()
(interactive)
(kill-some-buffers
(-filter (lambda (buffer)
(save-excursion
(set-buffer buffer)
(eq major-mode 'dired-mode)))
(buffer-list))))
-filter
erfordert dash.el
von MELPA. Sie sollten dies wahrscheinlich als Voraussetzung angeben.
Was Sie tatsächlich suchen, ist eine Möglichkeit, unerwünschte Puffer automatisch zu bereinigen. In diesem Fall sollten Sie überprüfen midnight.el
, welcher Teil von Emacs ist.
Im Allgemeinen ibuffer
ist es jedoch sehr einfach, Puffer in großen Mengen zu bearbeiten, wie Francisco vorgeschlagen hat.
Wenn Sie Eiszapfen verwenden , können Sie damit C-x k
alle Dired-Puffer - oder alle Puffer in einem bestimmten Modus - töten.
C-x k
Verwenden Sie C-x M +
nach dem Schlagen , um nur die Puffer mit einem bestimmten Modus beizubehalten. Drücken Sie TAB
, um die Modi anzuzeigen, und wählen Sie dired-mode
. Verwenden Sie dann C-!
, um alle Puffer in diesem Modus zu löschen.
C-x k C-x M + dired-mode C-!