如何阻止 emacs dired 模式打开这么多缓冲区?
Posted
技术标签:
【中文标题】如何阻止 emacs dired 模式打开这么多缓冲区?【英文标题】:How do I stop emacs dired mode from opening so many buffers? 【发布时间】:2010-12-22 19:08:24 【问题描述】:当我使用dired
mode 浏览并找到我想在 Emacs 中打开的文件时,dired
为我每次使用 选择目录时查找文件时访问的每个目录打开一个新缓冲区输入,这意味着我可以得到很多我不想要的缓冲区:
. * newer 0 Fundamental c:/work/***/batch/mydir/newer
% mydir 302 Dired by name c:/work/***/batch/mydir/
% batch 616 Dired by name c:/work/***/batch/
% *** 1017 Dired by name c:/work/***/
% work 2545 Dired by name c:/work/
* *scratch* 190 Lisp Interaction
% *Completions* 162 Completion List
* *Messages* 2163 Fundamental
有没有办法让dired
重复使用单个缓冲区?我为dired
组尝试了M-x customize-group
,但没有看到任何有希望的内容。
或者,有没有人有一个宏来关闭所有打开的dired
缓冲区?
【问题讨论】:
【参考方案1】:在 Emacs 28 中,您可以只使用 (setf dired-kill-when-opening-new-dired-buffer t)
。这适用于dired-find-file
(RET
) 或dired-up-directory
(^
)。
【讨论】:
【参考方案2】:来自 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
【讨论】:
【参考方案3】:当在 dired 中浏览而不是按回车键查看目录时,使用 i 然后将该目录添加到当前缓冲区。
【讨论】:
+1 这确实有帮助,但我不确定我是否喜欢在一个缓冲区中有很多目录。 为此 +1 以及在i
之后点击^
DWIM。【参考方案4】:
Dired+ 让您有选择地执行此操作,并且可以随时打开/关闭它。
另见http://www.emacswiki.org/emacs/DiredReuseDirectoryBuffer。
【讨论】:
【参考方案5】:我从来没有设法让 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 缓冲区 per se 烦人,还有其他一些选择,就像它们污染缓冲区列表的方式一样。例如,elscreen.el 有一个 dired 插件,可以将 dired 缓冲区保存在自己的选项卡中,出色的 ibuffer 模式允许您在列出缓冲区时将 dired 缓冲区分组在一起。
希望有帮助!
西蒙
【讨论】:
【参考方案6】:使用 a (dired-find-alternate-file
) 而不是 Enter
另外,请参阅此页面:
http://www.emacswiki.org/emacs/DiredReuseDirectoryBuffer
【讨论】:
正是我想要的。如果用a
打开文件,甚至可以完全摆脱dired 缓冲区!
回到父目录怎么样?我使用 ^ 上一个目录,但这样做会创建一个新的 dired 缓冲区。
@avendael 请参阅the DiredReuseDirectoryBuffer wiki page 以获得解决方案。以上是关于如何阻止 emacs dired 模式打开这么多缓冲区?的主要内容,如果未能解决你的问题,请参考以下文章