在状态栏中显示文件的路径

时间:2010-05-25 09:30:44

标签: emacs

GNU Emacs 23.1.1

我想知道有没有办法在状态栏中显示文件的路径,而不仅仅是文件名。

我必须在许多目录中打开许多文件,有时我会忘记它们所在的目录。如果可能的话,更容易在状态栏中显示某些路径。

有时我的目录路径很长。

例如

/projects/clientserver/trunk/src/client/client.c
在状态栏中像这样,只显示最后两个目录。

/src/client/client.c

非常感谢任何建议,

5 个答案:

答案 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)

请参阅变量的文档   “帧标题格式” 它会指向变量   “模式行格式” 详细说明了设置标题的选项