7

我有两个同名但位于不同目录的文件:

apples/main.cpp
oranges/main.cpp

我通过在一个 emacs 窗口中打开它们emacs apples/main.cpp oranges/main.cpp

当我C-x b在这两个缓冲区之间切换时,缓冲区名称是“main.cpp”和“main.cpp<2>”。我希望在切换缓冲区时能够看到这两个文件的完整路径,这样我就可以在苹果和橙子版本之间消除歧义。有没有办法做到这一点?

一种方法是在 Emacs 检测到具有该名称的缓冲区已经打开时,修改在第二个 main.cpp 之后生成 <2> 的任何代码。但是,我找不到如何做到这一点。

4

3 回答 3

13

使用唯一性。我这样使用它:

(require 'uniquify)
(setq uniquify-buffer-name-style 'forward)
于 2011-04-09T20:56:39.320 回答
5

扩展 Tomasz 的答案。

除了forward,您还可以考虑 uniquify-buffer-name-style 的其他选项:

文件 /foo/bar/mumble/name 和 /baz/quux/mumble/name 将具有以下各种样式的缓冲区名称:

forward        bar/mumble/name  quux/mumble/name
reverse        name\mumble\bar  name\mumble\quux
post-forward   name|bar/mumble  name|quux/mumble
post-forward-angle-brackets   name<bar/mumble>  name<quux/mumble>

如果要去除冲突文件的公共目录后缀,请将下面的行添加到您的 emacs 初始化文件中。

(setq uniquify-strip-common-suffix t)

现在,如果您打开 /a1/b/c/d 和 /a2/b/c/d,缓冲区名称将显示“d|a1”和“d|a2”而不是“d|a1/b/c”和“d|a2/b/c”。

于 2011-04-11T13:47:46.950 回答
1

使用精力充沛的资源管理器。配置它:

(require 'lusty-explorer)

;; Override the normal file-opening and buffer switching.
(global-set-key (kbd "C-x C-f") 'lusty-file-explorer)
(global-set-key (kbd "C-x b")   'lusty-buffer-explorer))
于 2011-04-09T21:30:26.037 回答