我在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和:!的帮助,但无法找到解决此问题的任何内容。
答案 0 :(得分:1)
我不知道是否有办法这样做,但在任何脚本中使用!...%
是一个坏主意,因为它是不可能的(至少在POSIX系统上,AFAIK在文件名中禁止"
的窗口上不是这样。如果您需要将文件名传递给shell命令,请使用:execute
+ shellescape()
+ expand()
:
command! E :execute 'silent !start explorer /select,'.shellescape(expand('%:p'), 1)