【问题标题】:How do I stop emacs dired mode from opening so many buffers?如何阻止 emacs dired 模式打开这么多缓冲区?
【发布时间】:2010-12-22 19:08:24
【问题描述】:

当我使用dired mode 浏览并找到我想在 Emacs 中打开的文件时,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 重复使用单个缓冲区?我为dired 组尝试了M-x customize-group,但没有看到任何有希望的内容。

或者,有没有人有一个宏来关闭所有打开的dired 缓冲区?

【问题讨论】:

    标签: emacs file-management 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 之后点击^ DW​​IM。
        【解决方案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 以获得解决方案。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-06-19
            • 1970-01-01
            • 2014-02-26
            • 2014-10-17
            • 2015-01-02
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多