如何在Vim中回显%,<cfile>等特殊字符?

Tom*_*aps 2 vim

说我想看看我在哪个目录,我输入

:echo .
Run Code Online (Sandbox Code Playgroud)

并收到错误消息:

E15:Invalid expression .
Run Code Online (Sandbox Code Playgroud)

我怎样才能呼应了这些特殊字符,如%,.,<cfile>

Ren*_*ger 6

你需要使用 expand()

例如

:echo expand("%:h")
Run Code Online (Sandbox Code Playgroud)

打印实际目录(当前缓冲区).

也可以看看 :help expand

如果你想查询当前目录(这是缓冲区独立的),你应该只是一个:pwd.(见:help current-directory)

(编辑:从改变:cd:pwd为每IB的评论).


ib.*_*ib. 5

有一个专门的命令可以打印当前目录路径:

:pwd
Run Code Online (Sandbox Code Playgroud)

(请参阅帮助中:help :pwd的整个“当前目录”部分::help current-directory。)

要快速找出 Vim 命令行特色扩展到的路径,请使用

:echo expand('%:p:h')
Run Code Online (Sandbox Code Playgroud)

或者,更短,

:!echo %:p:h
Run Code Online (Sandbox Code Playgroud)

前一个命令基于在expand()给定参数中扩展通配符和特殊关键字的函数(请参阅 参考资料:help expand)。后一个命令利用了在运行外部命令之前扩展通配符这一事实(请参阅 参考资料:help cmdline-special)。