Ala*_*ing 6 emacs buffer autocomplete switch-statement ido-mode
我有两个相同名称但在不同目录中的文件:
apples/main.cpp
oranges/main.cpp
Run Code Online (Sandbox Code Playgroud)
我通过一个emacs窗口打开它们 emacs apples/main.cpp oranges/main.cpp
当我C-x b用来在这两个缓冲区之间切换时,缓冲区名称是"main.cpp"和"main.cpp <2>".我希望能够在切换缓冲区时看到这两个文件的完整路径,这样我就可以在苹果和橙子版本之间消除歧义.有没有办法做到这一点?
一种方法是修改在第二个main.cpp之后生成<2>的任何代码,当Emacs检测到具有该名称的缓冲区已经打开时.但是,我找不到怎么做.
Tom*_*ndt 13
使用uniquify.我这样用它:
(require 'uniquify)
(setq uniquify-buffer-name-style 'forward)
Run Code Online (Sandbox Code Playgroud)
扩展Tomasz的答案.
uniquify-buffer-name-style还有其他选项,除了forward之外,您可以考虑:
文件/ 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>
Run Code Online (Sandbox Code Playgroud)
如果要删除冲突文件的公共目录后缀,请将以下行添加到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".