我在 vim 中创建了一个命令,使用以下命令在资源管理器中打开当前文件:命令! E silent !start explorer/select,"%:p"
如果我使用此命令尝试打开我的 _vimrc 文件(位于:C:\Program Files (x86)\Vim\_vimrc),它会打开错误的目录。似乎 %:p 在启动 Explorer 时转义了 "x86"周围的括号,这导致它试图导航到 C:\Program Files\(x86\)\Vim\_vimrc
我觉得奇怪的部分是,如果在 vim 中键入以下命令::echo expand("%:p")
它打印的路径没有转义括号。
此外,如果我尝试在命令中对路径进行硬编码,它会正确打开。这让我相信 vim 在使用 !命令。
有谁知道在使用 ! 时防止 %:p 转义括号的方法吗?命令?我通读了 %:p 和 :! 的帮助,但找不到任何内容来解决这个问题。
最佳答案
我不知道是否有办法这样做,但是在任何脚本中使用!...%
是个坏主意,因为这是不可能的(至少在 POSIX 系统上,AFAIK 在文件名中禁止 "
的 Windows 上不是这样。如果您需要将文件名传递给 shell 命令,请使用 :execute
+shellescape()
+expand()
:
command! E :execute 'silent !start explorer /select,'.shellescape(expand('%:p'), 1)
关于windows - 防止 vim 在使用 % :p 时转义括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9166110/