Vim:如果文件目录包含特殊字母,则无法打开它

Vim:如果文件目录包含特殊字母,则无法打开它

在 Vim 中,我可以使用以下命令打开活动文件的目录:

:silent ! start %:p:h

但是,如果目录包含特殊字符(如斯堪的纳维亚字母),我就会收到错误。下面是示例的链接。

错误信息类似于“无法找到目标。请确保输入正确,然后重试。”(芬兰语)。上例中的目录是D:\ölöälä,但如您所见,ö 和 ä 字母在 cmd 中无法正确显示。我认为这导致了错误。

我该如何解决这个问题?我使用的是 64 位 Win 7。

答案1

这是一个vim错误。

romainl与问题评论中所说的相反,这根本不是问题。事实上,cmd这与无关。和都按设计运行。cmdcmdstart

问题在于,它vim使用 UTF-8(参见:help unicode.)来存储和操作命令字符串,并将该 UTF-8 字符串原封不动地传递给编程 API,而该 API 一开始就不接受 UTF-8。具体来说:它最终将 UTF-8 字符串传递给函数CreateProcessA()。但CreateProcessA()接受以Windows 代码页vim 应该预先将字符串从 UTF-8 转换为适当的代码页(或转换为 Unicode 并调用CreateProcessW())。但是它没有。

因此,由vimfrom构造的 UTF-8 路径名中的字节序列被当作 Windows 代码页中的字节序列来%:p:h处理。您可以看到结果。CreateProcessA()

可能没有本地修复对此。使用 8.3 名称 ( :8) 根本无法解决这个问题。但摆弄 的vim变量encoding可能会在一定程度上改善它(尽管它会影响不止这一点,并且不是解决问题的正确方法)。您必须与 Bram Moolenaar 交谈。(查阅vim7.3 错误列表,我发现您也可以与这个人,尽管让 M. Moolenaar 相信 kikuchan 并不孤单仍然是一个好主意。)

相关内容