windows - 防止 vim 在使用 % :p 时转义括号

标签 windows vim explorer

我在 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/

相关文章:

C# 简单应用程序会产生大量页面错误。为什么?

php - 有经验的 Asp.net 程序员在开始使用 PHP 时应该了解什么?

bash - vim中折叠bash函数的问题

c++ - 在资源管理器中打开

c# - 如何防止子窗口关闭后父窗口进入后台?

c - 如何在 Windows 内核驱动程序中编译 OPENSSL(RSA、DSA、HMAC)?

regex - VIM - 如何粘贴没有特殊字符的搜索寄存器?

c - 带有 C 的丰富 ctags 未正确产生到函数定义的重定向

c# - 如何使用C#创建Thumbnail Provider(用于Windows资源管理器)?

php - reSTLer 资源管理器提示查看器与 REQUEST_BODY json