如何使Dired缓冲区名称包含完整路径?


9

我经常dired打开许多缓冲区,包括一些具有相同名称的文件夹。有时,这会导致我切换到错误的位置,因此我正在寻找一种解决方法。

当前,如果我在中打开了多个同名文件夹dired,则我的缓冲区列表如下所示:

foo
foo<2>
bar
foo<3>
bar<2>

我想在缓冲区名称中包含完整路径(或路径的一部分),以便可以看到我实际上要切换到的文件夹。我更喜欢这样:

foo</full/path/to/foo>
foo</another/path>

等等。我也可以满足例如:

/full/path/to/foo
/another/path/foo

但我希望使用前者,因为通常通过首先通过文件夹名称找到第二个我想要的缓冲区,然后再通过完整路径找到它是比较容易的。如何才能做到这一点?

Answers:


8

您可以通过使用uniquify以下设置来获得此行为:

(require 'uniquify)
(setq uniquify-buffer-name-style 'post-forward-angle-brackets
      uniquify-min-dir-content 999)

但是请注意,uniquify可以全局运行,不仅适用于Dired缓冲区。


太好了,谢谢!在我接受答案之前,我将拭目以待,看看是否有能够给出完整路径的解决方案。
Scott Weldon 2014年

1
我刚刚添加了有关的注释uniquify-min-dir-content,这应该可以帮助您。但是请注意,这是一个全局设置:它适用于所有缓冲区,而不仅仅是干缓冲区!
辣椒粉

5

在我的.emacs中,我通过以下方式设置Dired缓冲区的完整路径:

(add-hook 'dired-after-readin-hook
      (lambda ()
        ;; Set name of dired buffers to absolute directory name.
        ;; Use `generate-new-buffer-name' for vc-directory
        ;; which creates duplicate buffers.
        (rename-buffer (generate-new-buffer-name dired-directory))))
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.