How do I stop emacs dired mode from opening so many buffers?

EmacsFile ManagementDired

Emacs Problem Overview


When I use dired mode to browse around and find a file I want to open in Emacs, dired opens a new buffer for each directory I visit when looking for the file each time I select a directory with Enter, which means I can end up with a lot of buffers I don't want:

. * newer                    0  Fundamental       c:/work/stackoverflow/batch/mydir/newer
 %  mydir                  302  Dired by name     c:/work/stackoverflow/batch/mydir/
 %  batch                  616  Dired by name     c:/work/stackoverflow/batch/
 %  stackoverflow         1017  Dired by name     c:/work/stackoverflow/
 %  work                  2545  Dired by name     c:/work/
  * *scratch*              190  Lisp Interaction
 %  *Completions*          162  Completion List
  * *Messages*            2163  Fundamental

Is there any way to make dired re-use a single buffer? I tried M-x customize-group for group dired but didn't see anything promising in there.

Alternatively, does anyone have a macro to close all open dired buffers?

Emacs Solutions


Solution 1 - Emacs

Use a (dired-find-alternate-file) instead of Enter

Also, see this page:

http://www.emacswiki.org/emacs/DiredReuseDirectoryBuffer

Solution 2 - Emacs

When browsing in dired instead of hitting enter to see a directory use i then it adds that directory to the current buffer.

Solution 3 - Emacs

I've never managed to get toggle-dired-find-file-reuse-dir to work reliably - I still end up with a variety of dired buffers open, and I'm never quite sure how.

Recently I discovered dired-single (<http://www.emacswiki.org/cgi-bin/wiki/dired-single.el>;) which seems to work better for me. If you want it guarantees a single dired buffer, and also has a nice command dired-single-magic-buffer which will take you to the open dired buffer if you have one, and opens one if you don't.

There are some other alternatives if it isn't the multiple dired buffers per se that annoy, so much as the way they pollute your buffer lists. For example, elscreen.el has a dired plugin that keeps the dired buffers in their own tab, and the excellent ibuffer mode allows you to group dired buffers together when you list buffers.

Hope that helps!

Simon

Solution 4 - Emacs

From Xah Lee, at http://ergoemacs.org/emacs/emacs_dired_tips.html

;; Make dired open in the same window when using RET or ^
(put 'dired-find-alternate-file 'disabled nil) ; disables warning
(define-key dired-mode-map (kbd "RET") 'dired-find-alternate-file) ; was dired-advertised-find-file
(define-key dired-mode-map (kbd "^") (lambda () (interactive) (find-alternate-file "..")))  ; was dired-up-directory

Solution 5 - Emacs

Dired+ lets you do this optionally, and it lets you toggle it on/off anytime.

See also <http://www.emacswiki.org/emacs/DiredReuseDirectoryBuffer>;.

Solution 6 - Emacs

In Emacs 28, you can just (setf dired-kill-when-opening-new-dired-buffer t). This works for either dired-find-file (RET) or dired-up-directory (^).

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDave WebbView Question on Stackoverflow
Solution 1 - EmacsscottfrazerView Answer on Stackoverflow
Solution 2 - EmacsmmmmmmView Answer on Stackoverflow
Solution 3 - EmacsSimonView Answer on Stackoverflow
Solution 4 - Emacsch-pubView Answer on Stackoverflow
Solution 5 - EmacsDrewView Answer on Stackoverflow
Solution 6 - EmacsKasper GałkowskiView Answer on Stackoverflow