如何停止emacs dired模式打开过多的缓冲区?

57

使用dired模式浏览文件并找到要在Emacs中打开的文件时,每次使用Enter选择目录时,dired都会为我访问的每个目录打开一个新缓冲区,这意味着我可能会有很多我不想要的缓冲区:

. * 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

有没有办法让dired重用一个单一的缓冲区?我试过M-x customize-group自定义dired组,但在那里没看到什么有希望的东西。

或者,谁有一个宏可以关闭所有打开的dired缓冲区?

6个回答

73

1
正是我想要的。如果使用a打开文件,甚至可以完全摆脱dired缓冲区! - David Webb
3
返回上一级目录怎么样?我使用 ^ 符号可以返回上一级目录,但是这种方式会创建一个新的 dired 缓冲区。 - avendael
1
@avendael 请参考DiredReuseDirectoryBuffer wiki页面上的解决方案。 - mgalgs

16

在dired中浏览目录时,不要按Enter键查看目录,而是使用i键,这将把该目录添加到当前缓冲区。


+1 这确实有帮助,但我不确定我喜欢在一个缓冲区中有很多目录。 - David Webb
1
+1 是因为在 i 后面按 ^ DWIM。 - assem

7
我从未成功地使用过toggle-dired-find-file-reuse-dir - 我仍然会有各种dired缓冲区打开,而且我从来不确定是怎么回事。
最近我发现了dired-single (http://www.emacswiki.org/cgi-bin/wiki/dired-single.el),它对我来说似乎更好用。如果你想保证只有一个dired缓冲区,它可以做到,并且还有一个很好的命令dired-single-magic-buffer,如果你有一个已经打开的dired缓冲区,它会带你去那个缓冲区,如果没有,则会打开一个新的。
如果不是多个dired缓冲区本身让你烦恼,而是它们污染了你的缓冲区列表,有一些其他的替代方案。例如,elscreen.el有一个dired插件,将dired缓冲区保留在它们自己的标签中,而优秀的ibuffer模式允许你在列出缓冲区时将dired缓冲区分组。
希望这能帮到你!
西蒙

7
在Emacs 28中,您可以只需使用 (setf dired-kill-when-opening-new-dired-buffer t)。这适用于dired-find-fileRET)或dired-up-directory^)。

5

来自Xah Lee,位于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

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接