Manchmal hat meine Pufferliste mehr als 10 dired Fenster, und ich benutze buffer-menuam Ende, um alle manuell zu markieren und zu töten. Gibt es eine schnellere Möglichkeit, alle geöffneten Fenster zu schließen?
Ich hatte noch nie von ibuffer gehört. Ich werde auf jeden Fall Mapping C-x C-bzu ibuffer.
Nispio
Sie können auch t( dired-toggle-marks) drücken , um alle zu markieren (falls noch keiner markiert war).
Caisah
@caisah dired-toggle-marksist der Name des Befehls dired . Durch Drücken von twerden 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.
Nispio
@nispio Du hast recht. Ich weiß nicht warum, aber ich dachte, dass alle Puffer dired ...
Caisah
1
Hinweis: Dies funktioniert nicht ordnungsgemäß, wenn keine dired-Puffer vorhanden sind, da das D nicht für die dired-Puffer gilt, sondern für den ersten Puffer in der Liste.
Daniel Kullmann
10
Anstatt eine weitere Funktion zum Löschen aller diredPuffer 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 ibufferFenster 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, xum 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.
Filtergruppen wurden bei mir nicht angezeigt, als ich sie ibuffernach der Auswertung Ihres Codes zum ersten Mal startete . Ich musste / Rzuschlagen ibuffer-switch-to-saved-filter-groups, um die Gruppen zu bekommen.
itsjeyd
(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
Rangi Lin
1
Ja, das habe ich letztendlich getan.
Ich
10
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 RETeinen Verzeichnisnamen klicken, um ihn in Dired zu öffnen.
Weisen Sie Dired an, Dired-Puffer wiederzuverwenden:
(diredp-toggle-find-file-reuse-dir 1)
RETDies hat find-alternate-filezur 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.
Dies ist die Lösung, auf die ich mich jetzt geeinigt habe. Ich wollte nie 20 offene Dired-Puffer. Vielen Dank für den Vorschlag (und die Erstellung.)
Nispio
Die Links sind tot und bekommen eine 404: (
Zelphir Kaltstahl
1
@ Zelphir: Danke für das Heads-up. Sollte jetzt OK sein. (Emacs Wiki änderte seine URLs im Allgemeinen, so dass alte Beiträge wie dieser kaputte Links bekamen.)
Geben Sie in die Eingabeaufforderung Folgendes ein: *Di(Teilwort für Dired, keine weitere Eingabe erforderlich). Während der Eingabe werden die Puffer schrittweise verkleinert. Jetzt ist nur noch DiredPuffer übrig. Drücken Sie M-a, um alle zu markieren.
Drücken Sie TABzum Umschalten auf Aktionsmenü und drücken Sie KAktion auszuwählen Kill buffer(s).
Drücken Sie RET, um die Aktion auszuführen.
Das Gute daran helm-miniist, 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-miniist alles in einem. Lesen Sie mehr in meinem Helm-Mini-Guide .
helm-minikann auch Fuzzy-Match-Buffer und das Öffnen mehrerer Buffer durch Markieren mit C-SPCoder 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 @testbedeutet beispielsweise, dass Sie nur Puffer auswählen, die die Zeichenfolge "test" enthalten.
Ich glaube -filtererfordert dash.elvon MELPA. Sie sollten dies wahrscheinlich als Voraussetzung angeben.
Vamsi
1
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 ibufferist 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 kalle Dired-Puffer - oder alle Puffer in einem bestimmten Modus - töten.
C-x kVerwenden 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.
Antworten:
Sie könnten Folgendes tun:
M-x
ibuffer
* /
um Puffer im dired-Modus zu markieren.D
um sie zu löschen.quelle
C-x C-b
zuibuffer
.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 vont
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 nutzenibuffer
, um den Puffer nach vielen Bedingungen zu gruppieren.Hier ist ein Beispiel zum Festlegen von Filtergruppen:
Dann
C-x C-b
öffne dasibuffer
Fenster und du siehst so etwas:Bewegen Sie den Cursor auf
[ Dired ]
(mitM-p
,M-n
) und drücken Sied
, um als Löschen zu markierendann 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.
quelle
ibuffer
nach der Auswertung Ihres Codes zum ersten Mal startete . Ich musste/ R
zuschlagenibuffer-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
):Weisen Sie Dired an, Dired-Puffer wiederzuverwenden:
RET
Dies hatfind-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
(akaC-M-S-r
) in Dired umschalten.quelle
So etwas (ein bisschen scrollen)?
quelle
Sie können auch verwenden
helm-mini
:M-x helm-mini
.*Di
(Teilwort fürDired
, keine weitere Eingabe erforderlich). Während der Eingabe werden die Puffer schrittweise verkleinert. Jetzt ist nur nochDired
Puffer übrig. Drücken SieM-a
, um alle zu markieren.TAB
zum Umschalten auf Aktionsmenü und drücken SieK
Aktion auszuwählenKill buffer(s)
.RET
, um die Aktion auszuführen.Das Gute daran
helm-mini
ist, dass es normale Emacs ersetzen kannC-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 mitC-SPC
oderM-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.quelle
Ich würde so etwas versuchen:
quelle
-filter
erfordertdash.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.quelle
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 SieC-x M +
nach dem Schlagen , um nur die Puffer mit einem bestimmten Modus beizubehalten. Drücken SieTAB
, um die Modi anzuzeigen, und wählen Siedired-mode
. Verwenden Sie dannC-!
, um alle Puffer in diesem Modus zu löschen.quelle