我在vim中创build了一个命令,用以下命令在资源pipe理器中打开当前文件:
command! E silent !start explorer /select,"%:p"
如果我使用这个命令尝试打开我的_vimrc文件(位于:C:\ Program Files(x86)\ Vim \ _vimrc),它会打开错误的目录。 看来,%:p是当它启动资源pipe理器导致它试图导航到C:\ Program Files \(x86 \)\ Vim \ _vimrc时绕过“x86”括号
我觉得奇怪的部分是,如果在VIM中我input以下命令:
:echo expand("%:p")
它将打印path而不会溢出括号。
此外,如果我努力编码命令中的path正确打开。 这导致我相信用vimparsing%:p时有些奇怪的怪癖! 命令。
有谁知道一种方法来防止%:p使用!时避开括号! 命令? 我读了%:p和:!的帮助,但是找不到解决这个问题的任何东西。
我不知道是否有办法这样做,但是在任何脚本中使用!...%
是一个坏主意,因为它是不可能的(至少在POSIX系统上,AFAIK它不是那样的窗口, "
禁止”如果你需要传递一个文件名到一个shell命令,使用:execute
+ shellescape()
+ expand()
:
command! E :execute 'silent !start explorer /select,'.shellescape(expand('%:p'), 1)