Yanıtlar:
Aşağıdakileri yapabilirsiniz:
M-x ibuffer
* / Arabelleğe alınan modda işaretlemek için kullanılır.
D onları silmek için.
C-x C-biçin ibuffer.
t( dired-toggle-marks) düğmesine de basabilirsiniz ( önceden işaretlenmemişse).
dired-toggle-marksadıdır dired komuta. Basmak tdeğiştirilirken genellikle bu bağlamda mantıklı değil bu yüzden, ibuffer tüm işaretleri, ama genelde dired tampon outnumber olmayan dired tampon geçiş de olacaktır.
Tüm diredtamponları öldürmek için başka bir işlev eklemek yerine, filtre gruplarından faydalanmanızı öneririm ibuffer, tamponu birçok koşulla gruplandırmanıza izin verir.
Filtre gruplarını ayarlamak için bir örnek:
(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 . "\*.*\*"))
)))
Sonra pencereyi C-x C-baçın ibuffer, şöyle bir şey görebilirsiniz:

Taşı imleç [ Dired ](ile M-p, M-n), sonra basın dsilme olarak işaretine

daha sonra xyürütmek için basın .
Bu yolu tercih ediyorum çünkü anahtarımı yeni işleve nasıl bağlamamız gerektiğini düşünmeme gerek yok ve tamponlarım daha iyi organize oluyor.
ibufferKodunuzu değerlendirdikten sonra ilk başlattığımda filtre grupları benim için görüntülenmedi . Ben vurmak zorunda kaldı / R(bağlı ibuffer-switch-to-saved-filter-groupsgrupların almak için).
(ibuffer-switch-to-saved-filter-groups "Default")Bu kod satırını ibuffer hook'a ekleyebilirsiniz, değilse, filtre gruplarının adı değiştirilmelidirDefault
Hepsini bir noktada istediğin için çok fazla Dired tamponun var mı? IOW, sen mi istiyorsun ayrı tampon olarak onların her oluşturmak için?
Değilse, çözüm basittir: Dired'e, Dired'daRET açmak için bir dizin adına bastığınızda mevcut bir Dired arabelleğini yeniden kullanmasını söyleyin.
İşte bunu nasıl yapacağınız:
Kitaplığı yükle Dired + ( dired+.el):
(require 'dired+)
Dired’e Dired buffer’ları yeniden kullanma
(diredp-toggle-find-file-reuse-dir 1)
Bunun etkisi, RETDired'da bir dizindeki isabet (veya fareye tıkladığınızda) find-alternate-file, bu nedenle orijinal Dired arabelleği yenisiyle değiştirilir (silinir).
Dired'da C-M-R(aka C-M-S-r) kullanarak bu davranışı istediğiniz zaman değiştirebilirsiniz .
Böyle bir şey (biraz kaydırma)?
(defun kill-dired-buffers ()
(interactive)
(mapc (lambda (buffer)
(when (eq 'dired-mode (buffer-local-value 'major-mode buffer))
(kill-buffer buffer)))
(buffer-list)))
Ayrıca şunları da kullanabilirsiniz helm-mini:
M-x helm-mini.*Di(kısmi sözcük Dired, daha fazla girmenize gerek yok). Siz yazdıkça, tamponlar adım adım daralır. Şimdi sadece Diredtampon kaldı. M-aTümünü işaretlemek için tuşuna basın .TABeylem düğmesine basınız geçmek için Keylem seçmek için Kill buffer(s).RETİşlemi gerçekleştirmek için düğmesine basın .İşin iyi yanı helm-mininormal Emacs'ın yerini alabilmesidir C-x b, bu nedenle bir tane arabellek değiştirmek için diğeri gerçek bir arabellek yöneticisi için iki anahtar bağlama kullanmak zorunda kalmazsınız. helm-minihepsi bir arada. Dümen mini kılavuzumda daha fazlasını okuyun .
helm-miniayrıca bulanık eşleştirme tamponunu kullanabilir ve C-SPCveya ile işaretleyerek çoklu tamponların açılmasına izin verebilir M-a( M ark a ll için stand ). Ayrıca @, bir şablonun önüne ekleyerek arabellek belirli bir dize içerecek şekilde daraltabilirsiniz , örneğin, @testyalnızca "test" dizesini içeren arabelleklerin seçilmesi anlamına gelir.
Böyle bir şey denerdim:
(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))))
-filtergerektirdiğine inanıyorum dash.el. Muhtemelen bunu bir gereklilik olarak listelemelisiniz.
Aslında aradığınız şey, otomatik olarak istenmeyen arabellekleri temizlemenin bir yoludur; bu durumda midnight.el, Emacs'in bir parçası olan, hangi siteye bakmalısınız ?
Ancak, genel olarak konuşmak gerekirse, ibufferFrancisco’nun önerdiği gibi, arabelleklerde toplu çalışmayı çok kolaylaştırıyor.
Eğer kullanırsanız Icicles , o zaman kullanabilirsiniz C-x kherhangi bir modda veya tüm tamponları - tüm dired tamponlarını öldürmek için.
Vurduktan sonra C-x k, C-x M +yalnızca belirli bir moda sahip tamponları tutmak için kullanın . TABModları görmek için tuşuna basın ve seçin dired-mode. Ardından , bu moddaki tüm tamponları C-!öldürmek için kullanın .
C-x k C-x M + dired-mode C-!