GNU Emacs 23.1.1
我想知道有没有办法在状态栏中显示文件的路径,而不仅仅是文件名。
我必须在许多目录中打开许多文件,有时我会忘记它们所在的目录。如果可能的话,更容易在状态栏中显示某些路径。
有时我的目录路径很长。
例如
/projects/clientserver/trunk/src/client/client.c
在状态栏中像这样,只显示最后两个目录。
/src/client/client.c
非常感谢任何建议,
答案 0 :(得分:41)
您要问的是更改缓冲区名称。您可以使用uniquify自定义缓冲区的命名方式。它有几种制作唯一缓冲区名称的方法。最明显的选择是“转发”,它准确地给出了你的要求 - 在缓冲区名称的前面添加部分路径作为前缀。
但是,这可能会产生不必要的副作用。通常,通过附加后缀使缓冲区名称唯一。当您执行'c-x b'切换缓冲区时,如果键入“foo”并且您同时拥有“foo”和“foo< 1>”您将看到公共前缀并被赋予提供后缀的能力。因此,'c-x b foo'可以让你在看到所有“foo”缓冲区的列表时完成。
如果在'forward'模式下使用uniqueify,则会有“bar / foo”和“baz / foo”形式的缓冲区名称。现在,'c-x b foo'不会将您带到foo缓冲区,或者允许您完成获取foo缓冲区列表。您必须记住添加到每个缓冲区名称的前缀。
我的建议是使用uniqify的'reverse'模式,它使用目录路径作为后缀。它可能稍微不那么直观,但在实践中更容易使用。所以现在你将拥有像“foo \ bar”和“foo \ baz”这样的缓冲区,再次为你提供了能够做'cx b foo'并获得文件名为“foo”的所有缓冲区列表的优势。 / p>
所以,将它添加到.emacs文件中,看看你是否喜欢这种行为:
(require 'uniquify)
(setq uniquify-buffer-name-style 'reverse)
答案 1 :(得分:26)
如果您可以将此视为帧标题而不是状态栏,我个人更喜欢它,因为它不那么混乱,并且在使用 Alt + 切换窗口时也很有用TAB 等,然后您可以在.emacs
文件中添加以下内容,而无需安装任何扩展程序:
;; Disable loading of “default.el” at startup,
;; in Fedora all it does is fix window title which I rather configure differently
(setq inhibit-default-init t)
;; SHOW FILE PATH IN FRAME TITLE
(setq-default frame-title-format "%b (%f)")
%b
将照常显示缓冲区名称,%f
显示完整文件路径。您当然可以更改顺序,在两者之间添加文本,删除%b
等等。
答案 2 :(得分:8)
这个适用于我在框架中设置完整路径:
(setq frame-title-format
'(:eval
(if buffer-file-name
(replace-regexp-in-string
"\\\\" "/"
(replace-regexp-in-string
(regexp-quote (getenv "HOME")) "~"
(convert-standard-filename buffer-file-name)))
(buffer-name))))
答案 3 :(得分:5)
Uniquify几乎应该做你想做的事。
答案 4 :(得分:4)
请参阅变量的文档 “帧标题格式” 它会指向变量 “模式行格式” 详细说明了设置标题的选项