Mat*_*nen 3 windows-7 encoding vim command-line
在 Vim 中,我可以使用以下命令打开活动文件的目录:
:silent ! start %:p:h
Run Code Online (Sandbox Code Playgroud)
但是,如果目录包含特殊字符(如斯堪的纳维亚字母),则会出现错误。下面是一个例子的链接。
错误内容类似于“找不到目标。请确保您写对了,然后重试。” (芬兰语)。上面例子中的目录是D:\ölöälä,但是正如你所看到的,ö 和 ä 字母在 cmd 中没有正确显示。我认为这会导致错误。
我该如何解决这个问题?我使用的是 64 位 Win 7。
vim
错误。这不是问题,与问题romainl
的评论中所说的相反cmd
,完全没有。cmd
其实也没什么关系。双方cmd
并start
都表现为设计的。
问题在于vim
使用 UTF-8(请参阅:help unicode
.)来存储和操作命令字符串,并将该 UTF-8 字符串按原样传递给最初不接受 UTF-8 的编程 API。具体来说:它最终将 UTF-8 字符串传递给CreateProcessA()
函数。但CreateProcessA()
需要在Windows 代码页中编码的字符串。 vim
应该事先将字符串从 UTF-8 转换为适当的代码页(或转换为 Unicode 并调用CreateProcessW()
)。但事实并非如此。
因此,由vim
from构造的 UTF-8 路径名中的字节序列%:p:h
被视为CreateProcessA()
Windows 代码页中的字节序列。你可以看到结果。
可能没有本地解决方案。使用 8.3 名称 ( :8
) 根本无法解决此问题。但是摆弄vim
'sencoding
变量可能会在一定程度上改善它(尽管它会影响的不仅仅是这个,而且不是解决问题的正确方法)。你得和 Bram Moolenaar 谈谈。(查阅vim
7.3 错误列表,我发现您也可以与此人交谈,尽管让 M. Moolenaar 相信 kikuchan 并不孤单仍然是一个好主意。)
归档时间: |
|
查看次数: |
597 次 |
最近记录: |