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?
Zaakceptowałem odpowiedź, która najbardziej bezpośrednio odpowiada na pytanie. Jednak od tego czasu zacząłem stosować uncję zapobiegania: emacs.stackexchange.com/a/1041/93
Nigdy wcześniej nie słyszałem o ibufferze. Na pewno będę mapować C-x C-bna ibuffer.
nispio
Możesz także nacisnąć t( dired-toggle-marks), aby zaznaczyć wszystkie (jeśli żadne nie było wcześniej zaznaczone).
caisah
@caisah 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.
nispio
@nispio Masz rację. Nie wiem dlaczego, ale myślałem wszystkie bufory dired ...
caisah
1
Uwaga: nie działa to poprawnie, gdy nie ma buforów dired, ponieważ D nie będzie miało zastosowania do buforów dired, ale do pierwszego bufora na liście.
Daniel Kullmann
10
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.
Grupy filtrów nie były dla mnie wyświetlane po pierwszym uruchomieniu ibufferpo sprawdzeniu kodu. Musiałem uderzyć / R(związany ibuffer-switch-to-saved-filter-groups), aby zdobyć grupy.
itsjeyd
(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
Rangi Lin
1
Tak właśnie skończyłem. Nie wiedziałem o grupach filtrów przed przeczytaniem twojej odpowiedzi, dziękuję, że o nich wspomniałeś;)
itsjeyd
10
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.
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.
To jest rozwiązanie, na które się teraz zdecydowałem. Nigdy nie chciałem 20 otwartych buforów Dired. Dzięki za sugestię (i utworzenie).
nispio,
Linki są martwe, a 404: (
Zelphir Kaltstahl,
1
@Zelphir: Dzięki za heads-up. Teraz powinno być OK. (Wiki Emacsa ogólnie zmieniało swoje adresy URL, więc stare posty, takie jak ten, miały zepsute linki).
Wpisz znak zachęty: *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.
Naciśnij, TABaby przejść do menu akcji i naciśnij, Kaby wybrać akcję Kill buffer(s).
Naciśnij, 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”.
Wierzę, że -filterwymaga dash.elod MELPA. Prawdopodobnie powinieneś wymienić to jako wymóg.
Vamsi
1
To, czego możesz naprawdę szukać, to sposób automatycznego czyszczenia niechcianych buforów, w takim przypadku powinieneś sprawdzić midnight.el, który jest częścią Emacsa.
Ale ogólnie mówiąc, ibufferbardzo łatwo działa na zbiorczych buforach, jak sugerował Francisco.
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.
Odpowiedzi:
Możesz wykonać następujące czynności:
M-x
ibuffer
* /
do oznaczania buforów w trybie diodowym.D
aby je usunąć.źródło
C-x C-b
naibuffer
.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ęciet
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 wibuffer
, pozwala to na grupowanie bufora według wielu warunków.Oto przykład ustawiania grup filtrów:
Następnie
C-x C-b
otwórzibuffer
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.
źródło
ibuffer
po sprawdzeniu kodu. Musiałem uderzyć/ R
(związanyibuffer-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ęciu
RET
nazwy katalogu, aby otworzyć go w Dired.Oto jak to zrobić:
Załaduj bibliotekę Dired + (
dired+.el
):Powiedz Diredowi, aby ponownie używał buforów Dired:
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
(akaC-M-S-r
) w Dired.źródło
Coś w tym stylu (przewiń trochę)?
źródło
Możesz także użyć
helm-mini
:M-x helm-mini
.*Di
(słowo częścioweDired
, nie trzeba wprowadzać więcej). Podczas pisania bufory są stopniowo zwężane. Teraz został tylkoDired
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 EmacsaC-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
lubM-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”.źródło
Spróbowałbym czegoś takiego:
źródło
-filter
wymagadash.el
od MELPA. Prawdopodobnie powinieneś wymienić to jako wymóg.To, czego możesz naprawdę szukać, to sposób automatycznego czyszczenia niechcianych buforów, w takim przypadku powinieneś sprawdzić
midnight.el
, który jest częścią Emacsa.Ale ogólnie mówiąc,
ibuffer
bardzo łatwo działa na zbiorczych buforach, jak sugerował Francisco.źródło
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 wybierzdired-mode
. Następnie użyj,C-!
aby zabić wszystkie bufory w tym trybie.źródło