Czasami moja lista buforów ma ponad 10 okien z diodami i ostatecznie używam buffer-menudo ręcznego zaznaczania i zabijania ich wszystkich. Czy istnieje szybszy sposób na zamknięcie wszystkich otwartych okien?
Czasami moja lista buforów ma ponad 10 okien z diodami i ostatecznie używam buffer-menudo ręcznego zaznaczania i zabijania ich wszystkich. Czy istnieje szybszy sposób na zamknięcie wszystkich otwartych okien?
Odpowiedzi:
Możesz wykonać następujące czynności:
M-x ibuffer
* / do oznaczania buforów w trybie diodowym.
D aby je usunąć.
C-x C-bna ibuffer.
t( dired-toggle-marks), aby zaznaczyć wszystkie (jeśli żadne nie było wcześniej zaznaczone).
dired-toggle-marksjest nazwa dired polecenia. Naciśnięcie tspowoduje również przełączenie wszystkich znaków w ibufferze, ale bufory niebędące diodami zwykle przewyższają liczniki buforów, więc przełączanie często nie ma sensu w tym kontekście.
Zamiast dodawać kolejną funkcję do zabijania wszystkich diredbuforów, sugeruję skorzystanie z grup filtrów w ibuffer, pozwala to na grupowanie bufora według wielu warunków.
Oto przykład ustawiania grup filtrów:
(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 . "\*.*\*"))
)))
Następnie C-x C-botwórz ibufferokno, możesz zobaczyć coś takiego:

Przesuń kursor do [ Dired ](za pomocą M-p, M-n), a następnie naciśnij, daby zaznaczyć jako usuń

następnie naciśnij, xaby wykonać.
Wolę tak, ponieważ nie muszę myśleć o tym, jak powinienem powiązać mój klucz z nową funkcją, a moje bufory są lepiej zorganizowane.
ibufferpo sprawdzeniu kodu. Musiałem uderzyć / R(związany ibuffer-switch-to-saved-filter-groups), aby zdobyć grupy.
(ibuffer-switch-to-saved-filter-groups "Default")Możesz dodać ten wiersz kodu do haczyka ibuffer, nazwa grupy filtrów powinna zostać zmieniona, jeśli nie jestDefault
Czy masz wiele buforów Dired, ponieważ chciałeś je wszystkie w jednym momencie? IOW, czy chciałeś stworzyć każdy z nich jako osobne bufory?
Jeśli nie, rozwiązanie jest proste: powiedz Diredowi, aby ponownie używał istniejącego bufora Dired po naciśnięciuRET nazwy katalogu, aby otworzyć go w Dired.
Oto jak to zrobić:
Załaduj bibliotekę Dired + ( dired+.el):
(require 'dired+)
Powiedz Diredowi, aby ponownie używał buforów Dired:
(diredp-toggle-find-file-reuse-dir 1)
Efekt jest taki, że po RETnaciśnięciu (lub kliknięciu myszą) katalogu w Dired, find-alternate-fileużywany jest oryginalny bufor Dired jest zastępowany (usuwany) nowym.
Możesz zmienić to zachowanie w dowolnym momencie, używając C-M-R(aka C-M-S-r) w Dired.
Coś w tym stylu (przewiń trochę)?
(defun kill-dired-buffers ()
(interactive)
(mapc (lambda (buffer)
(when (eq 'dired-mode (buffer-local-value 'major-mode buffer))
(kill-buffer buffer)))
(buffer-list)))
Możesz także użyć helm-mini:
M-x helm-mini.*Di(słowo częściowe Dired, nie trzeba wprowadzać więcej). Podczas pisania bufory są stopniowo zwężane. Teraz został tylko Diredbufor. Naciśnij, M-aaby zaznaczyć wszystko.TABaby przejść do menu akcji i naciśnij, Kaby wybrać akcję Kill buffer(s).RETaby wykonać akcję.Dobrą rzeczą helm-minijest to, że może zastąpić normalne Emacsa C-x b, więc nie będziesz musiał używać dwóch powiązań klawiszy, jednego do przełączania bufora i jednego do faktycznego menedżera buforów. helm-minijest wszystko w jednym. Przeczytaj więcej w moim mini przewodniku po sterach .
helm-minimoże także zamazać bufor dopasowania i pozwolić na otwarcie wielu buforów poprzez oznaczenie za pomocą C-SPClub M-a(skrót od M ark a ll). Możesz także zawęzić do bufora zawierającego określony ciąg, dołączając @przed wzorem, na przykład @testoznacza , że zaznacz tylko bufory zawierają ciąg „test”.
Spróbowałbym czegoś takiego:
(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))))
-filterwymaga dash.elod MELPA. Prawdopodobnie powinieneś wymienić to jako wymóg.
Jeśli używasz Sopli , możesz użyć C-x kdo zabicia wszystkich buforów Dired - lub wszystkich buforów w dowolnym trybie.
Po trafieniu C-x kużyj, C-x M +aby zachować tylko bufory z określonym trybem. Naciśnij, TABaby zobaczyć tryby i wybierz dired-mode. Następnie użyj, C-!aby zabić wszystkie bufory w tym trybie.
C-x k C-x M + dired-mode C-!