GNU Emacs 23.1.1
我想知道有没有办法在状态栏中显示文件的路径,而不仅仅是文件名.
我必须在许多目录中打开许多文件,有时我会忘记它们所在的目录.如果可能的话,更容易在状态栏中显示某些路径.
有时我的目录路径很长.
例如
/projects/clientserver/trunk/src/client/client.c
Run Code Online (Sandbox Code Playgroud)
在状态栏中这样,只显示最后两个目录.
/src/client/client.c
Run Code Online (Sandbox Code Playgroud)
非常感谢任何建议,
Bry*_*ley 41
你要问的是改变缓冲区名称.您可以使用uniquify自定义缓冲区的命名方式.它有几种制作唯一缓冲区名称的方法.对你来说最明显的选择是'forward',它可以准确地给出你的要求 - 在缓冲区名称的前面添加一部分路径作为前缀.
然而,这具有潜在的不希望的副作用.通常,通过附加后缀使缓冲区名称唯一.当你执行'cx b'来切换缓冲区时,如果输入"foo"并且你同时拥有"foo"和"foo <1>",你将会看到公共前缀并被赋予提供后缀的能力.所以,'cx b foo'可以让你在看到所有"foo"缓冲区的列表时完成.
如果你在'forward'模式下使用uniqueify,你将拥有"bar/foo"和"baz/foo"形式的缓冲区名称.现在,'cx b foo'不会将您带到foo缓冲区,或者允许您完成以获取foo缓冲区列表.您必须记住添加到每个缓冲区名称的前缀.
我的建议是使用uniqify的'reverse'模式,它使用目录路径作为后缀.它可能稍微不那么直观,但在实践中更容易使用.所以现在你将拥有像"foo\bar"和"foo\baz"这样的缓冲区,再次为你提供了能够做'cx b foo'并获得文件名为"foo"的所有缓冲区列表的优势.
因此,将其添加到.emacs文件中,看看您是否喜欢这种行为:
(require 'uniquify)
(setq uniquify-buffer-name-style 'reverse)
Run Code Online (Sandbox Code Playgroud)
bok*_*ama 27
如果您可以将此视为帧标题而不是状态栏,我个人更喜欢它,因为它不那么混乱,并且在使用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)")
Run Code Online (Sandbox Code Playgroud)
%b将像往常一样显示缓冲区名称和%f完整文件路径.您当然可以更改订单,在两者之间添加文本,删除%b等.
小智 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))))
Run Code Online (Sandbox Code Playgroud)