我有两个同名但在不同目录中的文件:
apples/main.cpp
oranges/main.cpp
我通过emacs apples/main.cpp oranges/main.cpp
当我使用C-x b
在这两个缓冲区之间切换时,缓冲区名称为“main.cpp”和“main.cpp< 2>”。我希望能够在切换缓冲区时看到这两个文件的完整路径,这样我就可以在苹果和橙子版本之间消除歧义。有没有办法做到这一点?
一种方法是修改生成< 2>的任何代码。在第二个main.cpp之后,当Emacs检测到具有该名称的缓冲区已经打开时。但是,我找不到怎么做。
答案 0 :(得分:13)
使用uniquify。我这样用它:
(require 'uniquify)
(setq uniquify-buffer-name-style 'forward)
答案 1 :(得分:5)
扩展Tomasz的答案。
除了 forward 之外,还有其他选项可供您考虑使用uniquify-buffer-name-style:
Files / 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 init文件中。
(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”。
答案 2 :(得分:1)
使用lusty explorer。配置它:
(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))