Answers:
您可以按{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
1C-g
!
寄存器%
包含当前文件的名称。
可以输入以下命令来显示显示的信息:
: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上获取当前文件的名称
有关:
=expand...
在之后使用这些表达式Ctrl-R
。
您可以:!ls %:p
用来获取当前文件的完整路径。
根据ex上下文,%
将表示文件的内容或文件名。脱壳时,它表示相对于当前目录的文件路径。命令' %:p
将添加完整路径文件名修饰符到%
。
还有一些其他有趣的文件名修饰符,例如:
:~
:获取相对于主目录的文件路径(由于某种原因,该路径对我而言不起作用):.
:获取相对于当前目录的文件路径(%
默认):r
:文件名根。不带扩展名的文件名。:e
:文件扩展名。:h
:拆分/
并返回左半部分(即,如果我在的路径中编辑文件/tmp/test.txt
,则run %:p:h
将返回/tmp
:t
:拆分/
并返回右半部分(即,如果我在的路径中编辑文件/tmp/test.txt
,则run %:p:t
将返回text.txt
使用可以看到当前的工作目录:pwd
。当然,这只是目录,而不是文件名。要获取工作目录和文件名,我们可以使用特殊寄存器%
,其中包含有关当前文件的信息。
如果使用:echo @%
,则将获取当前文件的目录和文件名。
如果使用:echo expand('%:p')
,则将获得当前文件的完整路径和文件名。这与CharlesL的答案非常相似。
我记得这一个,不过,因为如果你使用vim的帮助:h expand
,那么就提到,%
和%:p
和他们的亲属。
有更好的答案,但是,如果(出于某种原因)您想要使用外壳程序来获取文件的完整路径(如果您打算使用外壳程序对文件执行其他操作,则更有用),在类似Unix的系统上,您可以运行:
:!realpath %
要么:
:'<,'>!realpath %
将路径插入到当前选择中的文档中。
注册%
始终包含文件名。一个现实的例子可能是,如果您正在编辑配置文件,但是没有写许可权(并且不想以root用户身份运行Vim),则可以编辑该文件,然后运行:
:w ! sudo tee %
保存文件(那里有点题外话,但这是用%
寄存器可以完成的一个很好的例子)。
realpath
不是POSIX,因此操作起来可能更简单:!echo "$PWD/%"
我为此使用vim Airlines和一些不错的功能:
您可以在标题栏中显示正在编辑的文件的完整路径,这是显示文件路径的便捷方法。
为此,您需要设置title
选项和titlestring
。当前我正在使用以下设置:
set title
set titlestring=%{hostname()}\ \ %F\ \ %{strftime('%Y-%m-%d\ %H:%M',getftime(expand('%')))}
它将显示Vim的主机名,然后是文件的完整路径,然后是文件的最后修改时间。参见下图的演示
Ctrl+G
更像“路径相对于Vim的CWD”?