在Vim的状态栏中显示当前编辑文件的相对路径?

8

:help statusline 声明 %f 将渲染成:

文件在缓冲区中的路径,可以是以当前目录为基础的相对路径或者直接输入的路径。

当我执行set statusline=%f时,状态栏中的路径有时是相对路径,但经常是绝对路径。

是否有办法确保显示的路径始终是相对路径?

3个回答

14

可能有更好的方法,但您可以尝试这个:

set stl+=%{expand('%:~:.')}

应该评估并将% {}中的表达式添加到您的状态行中。 这里的表达式是:

expand('%:~:.')

...它会展开当前文件的名称,但防止波浪线 (:~) 的扩展,并使路径相对于当前工作目录 (:.)。


@user852573 如果%f扩展为空,你能打印[无名称]吗? - user9429402
@user852573 没关系,我已经明白了。将状态行设置为\ %{expand('%::.')!=#''?expand('%::.'):'[无\ 名称]'}。 - user9429402

4

在解释%f的下方,您将找到F的解释。使用%F而不是%f将为您提供所需的显示。

item  meaning ~
f S   Path to the file in the buffer, as typed or relative to current
      directory.
F S   Full path to the file in the buffer.

谢谢,但不幸的是,那会呈现出完整(即绝对)路径,而我正在寻找呈现相对路径的方法(因为在我的某些存储库中,绝对形式太长了,无法提供帮助)。 - Dun Peal
你的问题似乎表达了相反的意思。 - dlmeetei
谢谢,我注意到最后一行有个拼写错误,所以我已经修正了。标题是正确的 - 我希望始终显示相对路径 - Dun Peal

0

你可以在 shell 中输入 :!echo % 来查看路径

:pwd 显示 vim 的当前工作目录


谢谢,但我正在寻找一个可以在命令行中运行的解决方案。 - Dun Peal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接