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

ant*_*009 36 emacs

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)

  • 只是语法修正:使用`uniquify-buffer-name-style`而不是`uniqueify-buffer-name-style`. (2认同)

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等.

  • 即使使用uniquify,这对我的xming设置非常有帮助,它已经将框架命名为无用的东西. (2认同)
  • 这就是我需要的,简单而美丽 (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))))
Run Code Online (Sandbox Code Playgroud)


Tho*_*ler 5

Uniquify应该几乎做你想要的.