如何在Vim中永久显示当前文件路径?

99

我知道CTRLg可以显示您正在工作的当前文件。是否有一种方法可以修改我的.vimrc,以便始终显示文件名/路径?

8个回答

139

在您的状态栏中添加 %F 以显示完整路径:

:help statusline

" Add full file path to your existing statusline
set statusline+=%F

注意,%F将是完整路径。要获取相对于工作目录的路径,请使用%f

如果您的状态栏尚未可见,您可能需要通过laststatus=2将其配置为始终可见。

set laststatus=2

查看:help laststatus以了解选项的含义。通常情况下,状态栏可能会被隐藏,或者仅在打开多个缓冲区时才会显示,但是我发现将其始终保持开启并进行自定义非常有用,值得为此舍弃一行屏幕空间。


2
我当然更喜欢你的答案,但是将 set statusline+=%F 添加到我的 ~/.vimrc 中似乎并没有做到你所说的。虽然文档确实支持你的观点... - Tim Pote
2
这没有任何影响。如果我错过了什么简单的东西,对不起,你有什么想法吗? - zallarak
1
@TimPote 你的vim版本是什么?这个命令对我有效。也许你的状态栏已经把它挤出去或限制了宽度。尝试只输入:set statusline=%F而不要加上+ - Michael Berkowski
2
@TimPote 可以尝试使用 set laststatus=2 命令,让状态栏一直可见。我之前忘记了这个设置。 - Michael Berkowski
@Michael 哦,我明白了。它不在标准的行号/列号等显示行中。 - Tim Pote
显示剩余5条评论

20

将 "set ls=2" 加入 vimrc 配置文件,就可以在底部始终看到文件名。


设置modeline对我没有任何作用,它应该做什么?(但是设置ls=2确实有所作为)。下次我该如何自己查找man/help来解决这个问题?谢谢! :) - Charlie Parker
1
“set modeline”有一定的危险性,与问题无关。它允许在文件的前5行/后5行执行Vim命令。只有那些知道为什么并真正需要它的人才应该打开它。(这就是为什么我-1这个答案) - DrBeco

19

我找到了两种方法,在使用Vim编辑文件时在gnome-terminal的标题栏中显示文件路径。

更简单(也更好)的方法:将以下行添加到您的~/.vimrc文件中:

set title

这将在顶部显示:

filename.ext (~/path_to_directory_where_your_file_is/) - VIM

更复杂的方法将显示您的绝对文件路径。在我最近撰写的博客文章中有更详细的说明。


“设置标题”将在终端选项卡上显示文件名。有趣的功能。 - duleshi
虽然很有趣,但并没有回答问题。而且你断言它更好 - 但可能并不是这样。例如,如果您的vim在全屏模式下打开的终端中,标题是不可见的。因此,我要给你点个踩。 - apprenticeDev

11
如果您正在使用 vim-airline,请将以下内容放入您的 .vimrc 文件中:
let g:airline_section_c = '%<%F%m %#__accent_red#%{airline#util#wrap(airline#parts#readonly(),0)}%#__restore__#'

这是对航空公司默认设置的修改,将%f改为%F


8

我发现获取正在操作文件的完整路径的唯一方法是::echo expand('%:p')。如果您想要重新映射ctrl+g,那么可以这样做,但我个人不太喜欢过多地偏离标准。我已将F7映射为以下内容:

map  <F7> <Esc>:echo expand('%:p')<Return>

4
请查看:help CTRL-G,并向下滚动两段以查找带计数的 CTRL-G - Stefan Majewsky
1
谢谢,@StefanMajewsky。1 CTRL-G显示完整文件名。我一直在寻找这个选项。 - Anton Kiselev
我喜欢你,Tim。这是绝对展示绝对路径的唯一方法,即使没有“~”。 - ryancheung

6

我一直使用:f,但是来自@MichaelBerkowski的答案和链接非常好!

:f会显示路径、行数、修改状态、当前光标位置等等...

我不知道CTRLG,但它似乎差不多。


5
状态行非常强大和方便。开箱即用,它会显示文件名、光标位置和一些标志。但是您想和我一样替换“文件名”部分为文件的完整路径。
因此,在编辑我的`.vimrc`时,默认情况下,我的状态行可能如下所示:
.vimrc                                                        26,16           7%

您可以使用以下命令查看状态栏的设置:

:set statusline?

但是如果您没有进行任何修改,并且没有模块更改它,它将为空。但是在帮助部分的示例(:help statusline)中,您可以发现默认值为:

:set statusline=%<%f\ %h%m%r%=%-14.(%l,%c%V%)\ %P

所以,请将以下内容加入您的.vimrc文件,并将%f更改为%F。我还在我的状态栏中添加了文件类型标志(%y),因为我发现它很方便。因此,我的最终配置如下:

:set statusline=%<%F\ %h%m%r%y%=%-14.(%l,%c%V%)\ %P

结果将会如下所示:
~/.vimrc [vim]                                                26,16           7%

精彩阅读:

PS. 我使用vim 7.3


4
如果您希望路径包含已解析的符号链接,请使用以下命令:
set statusline +=%{resolve(expand('%:p'))}\ %*

为了保留您主目录的“~”缩写,请使用fnamemodify
set statusline +=%{fnamemodify(resolve(expand('%:p')),':~')}\ %*

这两种方法在我使用VIM 7.4并通过iTerm2 SSH到Ubuntu 16.04 LTS时都有效。 - nicholsonjf

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