reddit / emacs

When I use dired and move to another directory, I end up with a lot of buffers. How can I just use one buffer for navigation?

Status-Detective-783 · 2022-02-24 06:43
mkthree · 2022-02-24 07:04
You might want to use `a` (`dired-find-alternate-file`) instead of RET (`dired-find-file`). The former will kill the current Dired buffer before visiting the directory.
Danrobi1 · 2022-02-24 07:39
To add to what u/mkthree said. There's also `i` which will expand the `directory` in the same `dired-buffer`. Run `dired-kill-subdir` to kill the expanded `directory`.
olivuser · 2022-02-24 08:08
Just to add to this, because it is my current workflow when in dired. It is possible to hide a subditectory's contents (I believe it is C-$, not sure though). Thus, when using i, hiding subidrectories can declutter your buffer and also speedup killing the subdirs not required anymore.
yep808 · 2022-02-24 08:12
Try dired-single. Works exactly as you wanted.
Danrobi1 · 2022-02-24 09:06
Yep. There's a `dired-hide-subdir`. Good call.
ZZhanChi · 2022-02-24 12:51
This is what I use to use dired in a single buffer automatically: ```lisp (defun fk/dired-up-directory () "`dired-up-directory' in same buffer." (interactive) (find-alternate-file "..")) (defun fk/dired-find-file (orig-func &rest args) "If selected file is a directory, open it in same buffer, otherwise, open the file in a new buffer." (let ((file (dired-get-file-for-visit))) (if (file-directory-p file) (apply 'dired-find-alternate-file args) (apply orig-func args)))) (advice-add 'dired-up-directory :override 'fk/dired-up-directory) (advice-add 'dired-find-file :around 'fk/dired-find-file) ``` source: https://github.com/KaratasFurkan/.emacs.d#dired-1
organic-bookworm · 2022-02-24 13:04
As a related note to consider, multiple Dired buffers may act as a sort of explicit file metadata cache, when fetching directories over slow media.
The-Blackbeard · 2022-02-24 13:14
Emacs 28.1 will have the option `dired-kill-when-opening-new-dired-buffer`
00-11 · 2022-02-24 18:06
[Dired+](https://www.emacswiki.org/emacs/DiredPlus) gives you an easy way to do what you want. `C-M-R` (aka `C-M-S-r`), bound to `diredp-toggle-find-file-reuse-dir`, toggles whether Dired `find-file` etc. commands *reuse directories*. A prefix arg specifies directly whether or not to reuse. If its numeric value is non-negative then reuse; else don't reuse. To set the behavior as a preference (default behavior), put this in your init file, where `VALUE` is 1 to reuse or -1 to not reuse: (diredp-toggle-find-file-reuse-dir VALUE) ---- You can of course also just use `a` anytime, to not create a new buffer. But this toggle lets you set and keep the behavior till you change it (toggle again), and it affects multiple Dired commands that visit a directory.
Status-Detective-783 · 2022-02-24 18:24
Cool thanks! And just for my newbie notes, prefix arg can be specified as `C-u -1 M-x dired RET`, which gives you a confirmation of dired listing switches set to `-al`, hit `RET` and then on to the dired interaction. Of course, that's more than needed given the easier options, but good to understand. :)
00-11 · 2022-02-24 19:05
`C-M-R` just determines whether, from now on (till you toggle again), Dired reuses buffers, as opposed to creating new ones. It doesn't change the interactive behavior of commands such as `dired` - so yes, you can still use a prefix arg with them, to set the `ls` switches.