如果我想查看当前所在目录,我可以输入以下命令:
:echo .
并且收到了错误信息:
E15:Invalid expression .
我该如何输出特殊字符,例如%
,.
和<cfile>
?
如果我想查看当前所在目录,我可以输入以下命令:
:echo .
并且收到了错误信息:
E15:Invalid expression .
我该如何输出特殊字符,例如%
,.
和<cfile>
?
expand()
函数。:echo expand("%:h")
打印实际目录(当前缓冲区的目录)。
另请参见:help expand
如果您想查询当前目录(与缓冲区无关),只需执行:pwd
即可。 (请参阅:help current-directory
)
(编辑:根据ib的评论,从:cd
更改为:pwd
)。
有一个专门的命令可以打印当前目录路径:
:pwd
(请参阅帮助文档中的“:help :pwd”和“当前目录”部分::help current-directory
)。
要快速了解Vim命令行特殊字符被扩展为哪些路径,请使用:
:echo expand('%:p:h')
:!echo %:p:h
前一个命令基于expand()
函数,该函数可以扩展给定参数中的通配符和特殊关键字(请参阅:help expand
)。
后一个命令利用了通配符在运行外部命令之前被扩展的事实(请参阅:help cmdline-special
)。
echo expand("%")
时它可以工作,但是当我输入 :echo expand('%:h:p')
时会得到一个 .
。请问 :h 和 :p 是什么意思? - TomCaps:p
这个修饰符应该首先应用,将前面的特殊变量的值扩展为其完整路径。然后再应用 :h
修饰符,删除最后一个路径组件,对于 %
特殊变量来说,它是文件名。这样,%:p:h
表示当前文件所在目录的完整路径。有关特殊变量及其修饰符的完整列表,请参见 :help expand()
和 :help cmdline-special
。 - ib.
:cd
命令只在非 Unix 系统上打印当前目录名称。在 Unix 系统上,它会将当前目录更改为主目录!要打印当前目录路径,请使用:pwd
命令。 - ib.