【问题标题】:Display path of file in status bar在状态栏中显示文件路径
【发布时间】:2010-05-25 09:30:43
【问题描述】:

GNU Emacs 23.1.1

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

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

有时我的目录路径很长。

例如

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

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

/src/client/client.c

非常感谢您的任何建议,

【问题讨论】:

    标签: emacs


    【解决方案1】:

    您要求的是更改缓冲区名称。您可以使用uniquify 自定义缓冲区的命名方式。它有几种方法可以制作唯一的缓冲区名称。对您来说最明显的选择是“转发”,它给出了您所要求的内容——在缓冲区名称前加上路径的一部分作为前缀。

    但是,这具有潜在的不良副作用。通常,缓冲区名称是通过附加后缀来唯一的。当您执行 'c-x b' 来切换缓冲区时,如果您输入“foo”并且您同时拥有“foo”和“foo”,您将看到公共前缀并被赋予提供后缀的能力。因此,'c-x b foo' 将让您在看到所有“foo”缓冲区的列表时完成补全。

    如果您在“前进”模式下使用 uniqueify,您将拥有“bar/foo”和“baz/foo”形式的缓冲区名称。现在,'c-x b foo' 不会带你到 foo 缓冲区,也不会让你完成以获取 foo 缓冲区列表。您必须记住添加到每个缓冲区名称的前缀。

    我的建议是使用 uniqify 的“反向”模式,它使用目录路径作为后缀。它可能不太直观,但在实践中更容易使用。因此,现在您将拥有像“foo\bar”和“foo\baz”这样的缓冲区,再次为您提供能够执行“c-x b foo”并获得文件名为“foo”的所有缓冲区列表的优势。

    因此,将其添加到您的 .emacs 文件中,看看您是否喜欢这种行为:

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

    【讨论】:

    • 只是语法修正:使用uniquify-buffer-name-style而不是uniqueify-buffer-name-style
    • 您可以使用“M-x customize-option RET uniquify-buffer-name-style RET”来选择行为,这也提供了对它们的快速解释(FWIW,我更喜欢 post-forward-angle-括号,它给出“文件名”)。
    • 在 .emacs 中使用 (require 'ido)(ido-mode t) 启用 ido-mode(请参阅 emacswiki.org/emacs/InteractivelyDoThings)将允许您键入 'C-x b foo' 并且仍然会在 foo 缓冲区中结束.如果您有多个带有 'foo' 的缓冲区,则在使用 ido 'C-s' 时会循环遍历它们。
    • 正如@egor7 指出的那样,这个答案似乎有错字,应该修复。使用uniqueify-buffer-name-style 对我不起作用,而使用uniquify-buffer-name-style 对我有用。
    • 它没有做任何改变,emacs@Bryan Oakley 底部显示的文件名
    【解决方案2】:

    如果您可以将其视为框架标题而不是状态栏中,我个人更喜欢它,因为它不那么混乱,并且在使用 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等。

    【讨论】:

    • 即使使用了 uniquify,这对我的 xming 设置也非常有帮助,因为它一直将框架命名为无用的东西。
    • 这正是我所需要的,简单又漂亮
    • 在 OSX 下的 Spacemacs 中为我工作,即使没有第一个 setq。太棒了!
    【解决方案3】:

    这对我来说非常适合在框架中设置完整路径:

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

    【讨论】:

    • 非常感谢——非常感谢!
    【解决方案4】:

    Uniquify 应该做你想做的事。

    【讨论】:

      【解决方案5】:

      查看变量的文档 '框架标题格式' 它会将您指向变量 '模式行格式' 其中详细说明了设置标题的选项

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-06-16
        • 2012-07-08
        • 1970-01-01
        • 2019-10-29
        • 2018-09-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多