如何找出当前在vim中打开的文件?


61

这听起来似乎微不足道,但在不止一次的情况下,我发现自己忘记了vim打开的文件(例如,当我查看不同的日志文件时),而我唯一知道如何找出方法就是关闭文件,然后在命令历史记录中查找最新命令。

vim中是否有命令告诉您当前打开了哪个文件而不退出程序或打开的文件(例如:<which_file_cmd>?)


5
如果您未vim使用那么多的arg进行调用,请使用:args
41754 2013年

Answers:


76

除了uprego的答案外,您还可以按Ctrl+ G(在正常模式下)以获取当前缓冲区的名称,其总行数以及您在其中的当前位置。

更新资料

根据rxdazn的注释,您可以按+ 1之前的键以获取完整的文件路径。如果按,则会显示完整的文件路径当前打开的缓冲区号(使用打开多个文件时很有用)。CtrlG2vim


像许多vim命令一样,这也适用于less查看文件而不是编辑时使用的命令。
jmathew

18
此外,在Ctrl + G之前按1即可为您提供文件的完整路径
rxdazn

23

vim我总是使用:ls命令。

:ls
  1 %a   "blah.txt"                         line 1

blah.txt文件名在哪里。



7

vim不带许多参数调用时,:args很有帮助。


4
另一个问题是,如果在启动vim之后打开文件,则不会列出该文件。
Patrick

4

如果您可以拥有默认的vim配置文件,则可以添加statusline以始终提供文件详细信息。我知道,如果您不断将远程服务器迁移到其他服务器,将不会有太大帮助。这是我的.vimrc文件中有些复杂的文件。

" %F(Full file path)
" %m(Shows + if modified - if not modifiable)
" %r(Shows RO if readonly)
" %<(Truncate here if necessary)
" \ (Separator)
" %=(Right align)
" %l(Line number)
" %v(Column number)
" %L(Total number of lines)
" %p(How far in file we are percentage wise)
" %%(Percent sign)
set statusline=%F%m%r%<\ %=%l,%v\ [%L]\ %p%%

" Change the highlighting so it stands out
hi statusline ctermbg=white ctermfg=black

" Make sure it always shows
set laststatus=2

在MacVim中看起来像这样(但也可以在终端中使用)。 在此处输入图片说明

与往常一样,您可以:help statusline获取更多选择和详细信息。并查看“ 学习Vim困难之路 ch 17”,以更好地了解状态线。


我也总是使用statusline。+1
罗布

1

还有:echo @%,它为您提供相对于当前目录的文件名。


1

有无数种获取此类信息的方法,但是如果您想要一些东西,只需要按一个键即可显示文件名,然后将以下内容插入您的~/.vimrc

map <F4> <ESC>:file<CR>

这说

bind the `F4' key to the following sequence: Escape-key, :file, Carriage-Return (enter-key)

file很明显,该命令将返回当前文件的名称以及其他信息。

您还可以设置一个状态行,这样您除了外观外无需做任何事情。

要保持状态行,请始终将以下内容插入您的~/.vimrc

set laststatus=2

这告诉ViM始终显示状态行,其他​​选项是0,永远不会显示,并且1仅当您在ViM中打开两个或多个窗口时才显示。


1

我通常只输入:e 文字,这也会显示完整的文件路径以及行数和字符数。

警告:它将从磁盘上重新打开文件,因此,当文件已保存时,它最有用。

:help :e 说:

                          *:e* *:edit*
Edit the current file.  This is useful to re-edit the
current file, when it has been changed outside of Vim.
This fails when changes have been made to the current
buffer and 'autowriteall' isn't set or the file can't
be written.

1

我的vimrc我有这个映射

nnoremap <leader>pfn :echo expand('%:p')<CR>

因此,如果键入,pfn或“打印文件名”,它将回显整个文件路径。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.