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

Posted

技术标签:

【中文标题】在vim中显示当前文件的名称?【英文标题】:Display name of the current file in vim? 【发布时间】:2011-05-05 22:20:57 【问题描述】:

如何在 vim 中显示正在处理的文件的文件名?

【问题讨论】:

如果您的终端设置正确,您应该在窗口标题中获得文件名。 另见:How can I permanently display the path of the current file in Vim? 相关:How can I see the full path of the current file? 在 Vim SE ctrl+g 是可以显示文件信息 【参考方案1】:

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

【讨论】:

很好,但可以在终端的顶部栏中显示它吗? (或终止符)或没有输入命令的地方。 :f! 并不总是有效,按 1,然后按 Ctrl-G 获取完整路径。 完整路径怎么样?当我从~/dev/file.py 启动vim 并在vim 中执行:f 时,我得到file.py 作为输出而不是~/dev/file.py @ives 1 和 Ctrl+g 分别是什么意思? @jobima:它修改ctrl-g 以返回路径+文件。 :f 将返回不带路径的文件名,ctrl-g 也可能如此。 1 之前的 ctrl-g 将显示路径和名称(尽管不一定展开)。即它将显示~/dev/file.py 而不是file.py2 后跟 ctrl-g 将包括哪个缓冲区:buf 1: "~/dev/file.py"【参考方案2】:

ctrl+g 会做到的。

另外,我喜欢:

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

产生:

foo.c [C] [0x23]

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

:!echo "当前文件: %" 当前文件:foo.c 按 ENTER 或键入命令继续

【讨论】:

[C][0x23] 部分是什么意思? @LangeHaare 光标下字符的文件类型和十六进制值 'statusline' 是一个字符串,但你没有在集合中包含引号:set statuslineset statusline=%f%m%r%h%w\ [%Y]\ [0x%02.2B]%&lt;\ %F%4v,%4l\ %3p%%\ of\ %L\ lines 也需要转义空格 如果您想编辑 Unicode 并查看字符的十六进制值,请将括号中的第二个 (%02.2B) 项更改为不将位数限制为两位,例如:[0x%02B]。 (精度.2 做了限制。02B 表示零填充并显示至少两位数。)【参考方案3】:

设置状态行。更多信息:help statusline

这些命令可以放在您的 .vimrc 文件中,或者您可以在 vim 中通过在命令模式下键入 ':' 将它们作为命令输入。

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

set laststatus=2

然后将状态行设置为 %f 作为短文件名。

set statusline=%f

对于文件的完整路径,使用 %F。

【讨论】:

E518:未知选项:%f 我已经更新了答案,Isius。希望这能让它更清楚。【参考方案4】:

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

【讨论】:

【参考方案5】:

为什么这么复杂? Control-G 将完成这项工作

【讨论】:

【参考方案6】:

要显示任何文件的完整路径,包括已解析的符号链接,请使用以下内容。

:echo resolve(expand('%:p'))

这可以通过将下面的行添加到您的~./vimrc 来添加到您的状态栏

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

【讨论】:

【参考方案7】:

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

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

使用amix/vimrc 的好处在于,这个插件负责大部分的定制,它非常稳定,并且已经过 1000 人的测试,你可以通过查看 github 星的数量来检查。 . 以及不常见的问题。

它的更新也很频繁。

P.S.:不是这两个插件的作者.. 只是一个粉丝 :)

【讨论】:

【参考方案8】:

我还需要把它放在我的 .vimrc 文件中:

set noruler
set laststatus=2

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

【讨论】:

'statusline' 是一个字符串,但你没有在集合中包含引号:set statuslineset statusline=%f%m%r%h%w\ [%Y]\ [0x%02.2B]%&lt;\ %F%4v,%4l\ %3p%%\ of\ %L\ lines 也需要转义空格【参考方案9】:

上述建议之一必须改为

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

让它工作。还有

set laststatus=2

被使用了。

【讨论】:

欢迎来到Stack Overflow!这可能应该是对相关答案的建议编辑或评论——您还没有足够的声誉来评论或编辑,但如果您提出好的问题并写出好的答案,您很快就会这样做!同时,我会向答案的作者提出相关的修复建议。好收获!

以上是关于在vim中显示当前文件的名称?的主要内容,如果未能解决你的问题,请参考以下文章

[原创]关于设置linux中vim 显示行号

vim 设置默认显示行号

vim永久显示行号

vim 设置默认显示行号

vim左边显示目录

vim配置高亮显示