在vim中显示当前文件的名称?

218

如何在vim中显示正在编辑的文件名?


1
如果您的终端设置正确,您应该在窗口标题中看到文件名。 - Cascabel
1
相关:如何查看当前文件的完整路径? 在 Vim SE 上。 - kenorb
4
Ctrl+G可以显示文件信息。 - Dhiren Hamal
10个回答

262

:f:file)与<C-G>具有相同的作用。如果适用,:f!将提供一个未截断的版本。


3
可以在终端的顶部栏(或终端器中)或其他地方显示它吗?无需键入命令。 - eMarine
28
“:f!” 并不总是有效的,请按 1,然后按 Ctrl-G 查看完整路径。 - ives
1
全路径怎么样?当我从~/dev/file.py启动vim并在vim中执行:f时,输出的是file.py而不是~/dev/file.py - gxyd
2
@ives 1和Ctrl+g分别是什么意思? - jobima
2
@jobima: 它修改 ctrl-g,返回路径和文件名。:f 将返回无路径的文件名,ctrl-g 也可能如此。在 ctrl-g 前加上 1 将显示路径和名称(但不一定会展开)。例如它将显示 ~/dev/file.py 而不是 file.py。在 ctrl-g 后跟随 2 将包含缓冲区信息:buf 1: "~/dev/file.py" - ives
@ives 什么是缓冲区? - Adil Saju

93
ctrl+g 可以实现此操作。
另外,我喜欢有:
set statusline="%f%m%r%h%w [%Y] [0x%02.2B]%< %F%=%4v,%4l %3p%% of %L"

这将产生:

foo.c [C] [0x23]<code/foo.c   1,   1   2% of 50

另外,如有人提到(但现已删除),%将被替换为当前文件名。例如:

:!echo "current file: %"
current file: foo.c
Press ENTER or type command to continue

3
“[C]”和“[0x23]”这两部分是什么意思? - LangeHaare
1
@LangeHaare 光标下字符的文件类型和十六进制值。 - user2201041
2
"statusline" 是一个字符串, 但你没有在设置中包含引号: set statuslineset statusline=%f%m%r%h%w\ [%Y]\ [0x%02.2B]%<\ %F%4v,%4l\ %3p%%\ of\ %L\ lines, 还需要转义空格。 - D. Ben Knoble
如果你想要编辑Unicode并查看字符的十六进制值,将方括号中第二个(%02.2B)项目更改为不限制数字数量,像这样:[0x%02B]。(精度.2限制了数量。02B表示零填充并至少显示两个数字。) - Tom Hundt

35

设置状态栏。有关更多信息,请使用:help statusline

这些命令可以放在您的.vimrc文件中,或者您可以在vim中输入它们作为命令,方法是在命令模式下键入“:”。

首先,使用以下命令将最后一个状态设置为2:

set laststatus=2

然后,将状态行设置为%f以获取短文件名。

set statusline=%f

要获取文件的完整路径,请使用%F。


E518:未知选项:%f - Isius
我已经更新了答案,Isius。希望这样更清楚明白了。 - Brian Clements
这应该是被接受的答案,因为当前被接受的答案只是暂时显示了文件名。 - RikuPotato

20

为什么这么复杂?使用Control-G就可以完成任务


18

:set title 用于在窗口标题栏中显示文件名。


10
为了显示任何文件的完整路径,包括已解析的符号链接,请使用以下命令。
:echo resolve(expand('%:p'))

您可以通过将以下代码行添加到您的 ~./vimrc 文件中,将此功能添加到状态栏中。

set statusline +=%{resolve(expand('%:p'))}\ %*

4

我还需要将以下内容添加到我的 .vimrc 文件中:

set noruler
set laststatus=2

然后我可以在我的 .vimrc 文件中添加类似 set statusline="%f%m%r%h%w [%Y] [0x%02.2B]%< %F%=%4v,%4l %3p%% of %L" 的内容,在重新启动终端后,状态行就会正确显示。


"statusline" 是一个字符串,但在设置中不包括引号: set statuslineset statusline=%f%m%r%h%w\ [%Y]\ [0x%02.2B]%<\ %F%4v,%4l\ %3p%%\ of\ %L\ lines 还需要转义空格。 - D. Ben Knoble

3

其中一个建议必须更改为

set statusline=%f%m%r%h%w\ [%Y]\ [0x%02.2B]%<\ %F%4v,%4l\ %3p%%\ of\ %L\ lines

以使其正常工作。此外,

set laststatus=2

也被使用了。


欢迎来到[so]!这可能应该是有关答案的建议性编辑或评论 - 如果您提出好问题并写出好的答案,您很快就会拥有足够的声誉来评论或进行编辑!与此同时,我将向答案的作者建议相关修复。好发现! - D. Ben Knoble

3

我使用了来自amix的惊人的vimrc:https://github.com/amix/vimrc

它使用lightline.vim插件并在状态栏上显示文件名。

使用amix/vimrc的好处是,这个插件可以处理大部分的自定义内容,非常稳定,并且已经被数千人测试过,您可以通过查看Github上的星星数量以及不频繁的问题来检查。

它还经常更新。

P.S.:我不是任何一个插件的作者,只是一个粉丝 :)


2
要将其显示在顶部,请将以下内容添加到您的~/.vimrc中:
" Statusline at the top (use tabline)
set tabline=%F\ %y  " only the format
set showtabline=2   " this turns on the tabline

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