#1 楼
您可以按{count}Ctrl-G
:{count}CTRL-G Like CTRL-G, but prints the current file name with
full path. If the count is higher than 1 the current
buffer number is also given.
按1,然后按Ctrl + G将显示当前文件的完整路径。如果
{count}
大于1,则还将显示缓冲区名称。(仅按Ctrl + G会显示相对于Vim当前工作目录的路径,正如Jasper在评论中指出的那样。)
您可以在
.vimrc
中使用以下命令将完整路径添加到状态行,因此它始终可见:set statusline+=%F
#2 楼
寄存器%
包含当前文件的名称。可以输入以下命令来显示所显示的信息:
:echo @% |" directory/name of file
:echo expand('%:t') |" name of file ('tail')
:echo expand('%:p') |" full path
:echo expand('%:p:h') |" directory containing file ('head')
想要的是显示当前文件的名称,键入
:f
/ :ls
或按Ctrl-g(对于完整路径,请先按1再按Ctrl-g)。在插入模式下,键入Ctrl-r然后%可以插入当前文件的名称。
以下命令将包含当前文件和备用文件的完整路径的行插入缓冲区:
:put =expand('%:p')
:put =expand('#:p')
来源:在vim wikia上获取当前文件的名称
相关:
如何显示文件名您正在vim中处理的文件?在stackoverflow SE
如何找出当前在vim中打开的文件?在Unix SE上
评论
可能值得注意的是,在插入模式下,也可以在Ctrl-R之后使用这些= expand ...表达式。
–dash-tom-bang
18年1月3日,下午2:01
#3 楼
您可以使用:!ls %:p
获取当前文件的完整路径。根据ex上下文,
%
表示文件的内容或文件名。脱壳时,它表示相对于当前目录的文件路径。命令'%:p
'会将完整路径文件名修饰符添加到%
中。还有一些其他有趣的文件名修饰符,例如:
:~
:获取相对于主目录的文件路径(由于某种原因,该路径对我不起作用):.
:获取相对于当前目录的文件路径(默认为%
):r
:文件名root。没有扩展名的文件名。:e
:文件的扩展名。:h
:在/
上分割并返回左半部分(即,如果我正在/tmp/test.txt
的路径并运行%:p:h
将返回/tmp
:t
:在/
上分割并返回右半部分(即,如果我在/tmp/test.txt
的路径中编辑文件并运行%:p:t
将返回text.txt
评论
我认为您的意思是%:p:t将返回text.txt
– John O'M。
2015年2月5日在4:20
@ JohnO'M。是的,没错,谢谢:D。固定。
–CharlesL
2015年2月5日,12:43
#4 楼
使用:pwd
可以看到当前的工作目录。当然,这只是目录,而不是文件名。要获取工作目录和文件名,我们可以使用特殊寄存器%
,其中包含有关当前文件的信息。如果使用
:echo @%
,则将获取当前文件的目录和文件名。 如果使用
:echo expand('%:p')
,则将获得当前文件的完整路径和文件名。这与CharlesL的答案非常相似。 但是我记得这一点,因为如果您使用vim的帮助
:h expand
,那么它会提到%
和%:p
及其亲戚。 #5 楼
您需要将状态行设置为可见,并将其设置为path。如果要只运行一次,我将下面的两行添加到我的〜/ .vimrcset laststatus=2
set statusline+=%F
中来永久执行此操作。然后在查看文档时,键入
:set laststatus=2 <ENTER>
:set statusline+=%F <ENTER>
评论
这与thameera在同一问题上提出的答案相同。
–statox♦
18年1月10日在8:03
#6 楼
有一个更好的答案,但是,如果(由于某种原因)您想要使用外壳程序来获取文件的完整路径(如果您打算使用外壳程序对文件执行其他操作,这将更加有用),在类似Unix的系统上,可以运行::!realpath %
或:
:'<,'>!realpath %
插入路径通过当前选择进入文档。
寄存器
%
始终包含文件名。一个现实的例子可能是,如果您正在编辑配置文件,但是没有写许可权(并且不想以root用户身份运行Vim),则可以编辑该文件,然后运行::w ! sudo tee %
以保存文件(那里有点题外,但这是
%
寄存器还可以做些什么的一个很好的例子)。评论
realpath不是POSIX,因此它可能更简单:!echo“ $ PWD /%”
–muru
2015年2月18日,0:57
#7 楼
要显示所有文件的完整路径,包括已解析的符号链接,请使用以下内容。:echo resolve(expand('%:p'))
#8 楼
下面将显示相对于当前目录的路径::f[ile]
即
:f
或:file
。评论
简单实用
– Morteza Ziyae
19年6月22日在8:49
不显示完整路径
– sjas
19年11月3日,1:50
确实@sjas,已更新
–Cédric Van Rompay
19年11月6日在17:26
在其他地方找到OP:s问题后,添加了正确答案
– sjas
19年11月7日在16:17
#9 楼
我为此使用vim Airlines和一些不错的功能:#10 楼
您可以在标题栏中显示正在编辑的文件的完整路径,这是一种方便的显示文件路径的方法。为此,您需要设置
title
选项和titlestring
。当前,我正在使用以下设置:set title
set titlestring=%{hostname()}\ \ %F\ \ %{strftime('%Y-%m-%d\ %H:%M',getftime(expand('%')))}
它将显示Vim的主机名,然后显示文件的完整路径,以及文件的最后修改时间。请参见下图以获取演示
#11 楼
Linux可以尝试使用realpath命令。:!realpath %
如果使用MacOS,请先尝试
brew install coreutils
。评论
这仅适用于Linux。
– jdhao
20 Dec 7'在8:42
欢迎来到Vi和Vim!正如jdhao指出的,我已经学到了很辛苦的方法,realpath并非在所有系统上都可用(甚至不是所有* nixes!)。考虑通过编辑答案来添加警告
– D. Ben Knoble♦
20 Dec 7'在13:21
这实际上是重复的答案。已在vi.stackexchange.com/a/1886/15292中提及
– jdhao
20/12/08在7:10
评论
Ctrl + G更像是“相对于vim的cwd的路径”吗?
–碧玉
15年2月3日在18:58
@Jasper好抓住!更新了答案。
– thameera
15年2月3日,19:06
似乎C-g是0C-g的默认值,另外2C-g还显示了缓冲区索引号(从1开始)。
–user10767
17年4月24日在16:27
我很高兴成为第100个支持您的答案的人!感谢您的1C-g!
–金库
18年11月6日15:08
如果希望状态行始终显示,还可以将set laststatus = 2添加到〜/ .vimrc
– Alex H
20年3月4日在4:00