使用%:p时,防止vim逃脱parantheses

时间:2012-02-06 19:35:57

标签: windows vim explorer

我在vim中创建了一个命令,使用以下命令在资源管理器中打开当前文件:
command! E silent !start explorer /select,"%:p"

如果我使用此命令尝试打开我的_vimrc文件(位于:C:\ Program Files(x86)\ Vim \ _vimrc),则会打开错误的目录。似乎%:p在启动资源管理器时转出“x86”左右的括号,导致它尝试导航到C:\ Program Files \(x86 \)\ Vim \ _vimrc

我觉得很奇怪的部分是,如果在vim中我键入以下命令:
:echo expand("%:p")它打印路径而不转义括号。

此外,如果我尝试在命令中对路径进行硬编码,则会正确打开。这让我相信这是一个奇怪的怪癖与vim解决%:p使用时!命令。

有没有人知道防止%:p在使用时转义括号的方法!命令?我通读了%:p和:!的帮助,但无法找到解决此问题的任何内容。

1 个答案:

答案 0 :(得分:1)

我不知道是否有办法这样做,但在任何脚本中使用!...%是一个坏主意,因为它是不可能的(至少在POSIX系统上,AFAIK在文件名中禁止"的窗口上不是这样。如果您需要将文件名传递给shell命令,请使用:execute + shellescape() + expand()

command! E :execute 'silent !start explorer /select,'.shellescape(expand('%:p'), 1)