A volte il mio elenco di buffer ha più di 10 finestre indirizzate e finisco per buffer-menu
usarle per contrassegnarle manualmente e ucciderle tutte. C'è un modo più veloce per chiudere tutte le finestre aperte?
A volte il mio elenco di buffer ha più di 10 finestre indirizzate e finisco per buffer-menu
usarle per contrassegnarle manualmente e ucciderle tutte. C'è un modo più veloce per chiudere tutte le finestre aperte?
Risposte:
Puoi fare quanto segue:
M-x
ibuffer
* /
per contrassegnare i buffer in modalità diretta.
D
per eliminarli.
C-x C-b
su ibuffer
.
t
( dired-toggle-marks
) per contrassegnare tutto (se nessuno era precedentemente contrassegnato).
dired-toggle-marks
è il nome del comando diretto . La pressione t
inoltre commuta tutti i segni in ibuffer, ma i buffer non diretti solitamente superano quelli dei buffer diretti, quindi la commutazione spesso non ha senso in questo contesto.
Invece di aggiungere un'altra funzione per eliminare tutti i dired
buffer, ti suggerisco di sfruttare i gruppi di filtri in ibuffer
, ti consente di raggruppare il buffer in base a molte condizioni.
Ecco un esempio per impostare i gruppi di filtri:
(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 . "\*.*\*"))
)))
Quindi C-x C-b
apri la ibuffer
finestra, puoi vedere qualcosa del genere:
Spostare il cursore su [ Dired ]
(con M-p
, M-n
), quindi premere d
per contrassegnare come Elimina
quindi premere x
per eseguire.
Preferisco così perché non ho bisogno di pensare a come associare la mia chiave alla nuova funzione e i miei buffer sono meglio organizzati.
ibuffer
dopo aver valutato il codice. Ho dovuto colpire / R
(vincolato ibuffer-switch-to-saved-filter-groups
) per ottenere i gruppi.
(ibuffer-switch-to-saved-filter-groups "Default")
È possibile aggiungere questa riga di codice in ibuffer hook, il nome dei gruppi di filtri deve essere modificato in caso contrarioDefault
Hai molti buffer Dired perché li volevi tutti ad un certo punto? IOW, volevi crearli ciascuno come buffer separati?
In caso contrario, la soluzione è semplice: dire a Dired di riutilizzare un buffer Dired esistente quando si premeRET
un nome di directory per aprirlo in Dired.
Ecco come farlo:
Carica libreria Dired + ( dired+.el
):
(require 'dired+)
Di 'a Dired di riutilizzare i buffer di Dired:
(diredp-toggle-find-file-reuse-dir 1)
L'effetto è che quando si RET
preme (o si fa clic con il mouse) su una directory in Dired, find-alternate-file
viene utilizzato, quindi il buffer Dired originale viene sostituito (eliminato) da quello nuovo.
Puoi attivare questo comportamento in qualsiasi momento, usando C-M-R
(aka C-M-S-r
) in Dired.
Qualcosa del genere (scorrere un po ')?
(defun kill-dired-buffers ()
(interactive)
(mapc (lambda (buffer)
(when (eq 'dired-mode (buffer-local-value 'major-mode buffer))
(kill-buffer buffer)))
(buffer-list)))
Puoi anche usare helm-mini
:
M-x helm-mini
.*Di
(parola parziale per Dired
, non è necessario immetterne altri). Durante la digitazione, i buffer vengono ridotti in modo incrementale. Ora, è Dired
rimasto solo il buffer. Premere M-a
per contrassegnare tutto.TAB
per passare al menu azioni e premere K
per selezionare l'azione Kill buffer(s)
.RET
per eseguire l'azione.La cosa buona helm-mini
è che può sostituire i normali Emacs C-x b
, quindi non dovrai usare due combinazioni di tasti, una per cambiare buffer e una per un gestore buffer reale. helm-mini
è tutto in uno. Maggiori informazioni nella mia guida helm-mini .
helm-mini
può anche fuzzy match buffer e consentire di aprire più buffer marcando con C-SPC
o M-a
(sta per M ark a ll). Puoi anche restringere il buffer per contenere una determinata stringa aggiungendo @
prima di un modello, ad esempio, @test
significa che solo i buffer contengono la stringa "test".
Vorrei provare qualcosa del genere:
(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
richieda il dash.el
MELPA. Probabilmente dovresti elencarlo come requisito.
Quello che potresti effettivamente cercare è un modo per ripulire automaticamente i buffer indesiderati, nel qual caso dovresti dare un'occhiata midnight.el
, che fa parte di Emacs.
Ma in generale, ibuffer
rende molto facile operare su buffer alla rinfusa, come ha suggerito Francisco.
Se usi Icicles , puoi usarlo C-x k
per uccidere tutti i buffer Dired o tutti i buffer in una determinata modalità.
Dopo aver colpito C-x k
, utilizzare C-x M +
per mantenere solo i buffer con una determinata modalità. Premi TAB
per vedere le modalità e scegli dired-mode
. Quindi utilizzare C-!
per uccidere tutti i buffer con quella modalità.
C-x k C-x M + dired-mode C-!