Czasami moja lista buforów ma ponad 10 okien z diodami i ostatecznie używam buffer-menu
do 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-menu
do 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-b
na ibuffer
.
t
( dired-toggle-marks
), aby zaznaczyć wszystkie (jeśli żadne nie było wcześniej zaznaczone).
dired-toggle-marks
jest nazwa dired polecenia. Naciśnięcie t
spowoduje 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 dired
buforó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-b
otwórz ibuffer
okno, możesz zobaczyć coś takiego:
Przesuń kursor do [ Dired ]
(za pomocą M-p
, M-n
), a następnie naciśnij, d
aby zaznaczyć jako usuń
następnie naciśnij, x
aby 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.
ibuffer
po 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 RET
naciśnięciu (lub kliknięciu myszą) katalogu w Dired, find-alternate-file
uż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 Dired
bufor. Naciśnij, M-a
aby zaznaczyć wszystko.TAB
aby przejść do menu akcji i naciśnij, K
aby wybrać akcję Kill buffer(s)
.RET
aby wykonać akcję.Dobrą rzeczą helm-mini
jest 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-mini
jest wszystko w jednym. Przeczytaj więcej w moim mini przewodniku po sterach .
helm-mini
może także zamazać bufor dopasowania i pozwolić na otwarcie wielu buforów poprzez oznaczenie za pomocą C-SPC
lub 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 @test
oznacza , ż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))))
-filter
wymaga dash.el
od MELPA. Prawdopodobnie powinieneś wymienić to jako wymóg.
Jeśli używasz Sopli , możesz użyć C-x k
do zabicia wszystkich buforów Dired - lub wszystkich buforów w dowolnym trybie.
Po trafieniu C-x k
użyj, C-x M +
aby zachować tylko bufory z określonym trybem. Naciśnij, TAB
aby 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-!