在状态栏中显示文件的path

GNU Emacs 23.1.1

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

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

有时我的目录path很长。

例如

/projects/clientserver/trunk/src/client/client.c 

像状态栏一样,只显示最后两个目录。

 /src/client/client.c 

非常感谢您的任何build议,

你问的是改变缓冲区名称。 您可以自定义如何使用唯一命名缓冲区。 它有几个方法来制作唯一的缓冲区名称。 对你来说最明显的select是“前进”,它正是你所要求的 – 把缓冲区名称前缀的一部分作为前缀。

但是,这有一个潜在的不希望的副作用。 通常,缓冲区名称通过追加后缀而变得唯一。 当你做'cx b'来切换缓冲区时,如果你input“foo”,并且你同时拥有“foo”和“foo <1>”,你将会显示通用的前缀并被赋予提供后缀的能力。 所以,'cx b foo'会让你完成你所看到的所有“foo”缓冲区的列表。

如果你在'forward'模式下使用uniqueify,你将会得到“bar / foo”和“baz / foo”forms的缓冲区名称。 现在,'cx b foo'不会把你带到foo缓冲区,或者让你完成获取foo缓冲区列表。 您必须记住添加到每个缓冲区名称的前缀。

我的build议是使用uniqify的“反向”模式,它使用目录path作为后缀。 这可能稍微不那么直观,但在实践中更易于使用。 所以现在你可以使用像“foo \ bar”和“foo \ baz”这样的缓冲区,同样可以让你做'cx b foo'并获得所有缓冲区的列表,名字是“foo”。

所以,添加到你的.emacs文件,看看你是否喜欢这个行为:

 (require 'uniquify) (setq uniquify-buffer-name-style 'reverse) 

如果你可以把这个视为框架标题而不是在状态栏中,我个人比较喜欢,因为它不那么混乱,而且在用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将显示完整的文件path。 你当然可以改变顺序,在中间添加文本,删除%b等。

这对我来说很适合在框架中设置完整的path:

 (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)))) 

uniquify应该几乎做你想要的。

请参阅variables“frame-title-format”的文档。它会指向variables“mode-line-format”,其中详细说明了设置标题的选项