This is a vim
bug.
It's not a problem, contrary to what romainl
says in a comment to the question, with cmd
at all. It's nothing to do with cmd
in fact. Both cmd
and start
are behaving as designed.
The problem is that vim
is using UTF-8 (See :help unicode
.) for storing and manipulating the command string, and is passing that UTF-8 string as-is to a programming API that doesn't accept UTF-8 in the first place. Specifically: It ends up passing the UTF-8 string to the CreateProcessA()
function. But CreateProcessA()
takes strings encoded in the Windows code page. vim
should convert the string beforehand from UTF-8 to the appropriate code page (or to Unicode and call CreateProcessW()
instead). But it doesn't.
As a consequence, the sequence of bytes in your UTF-8 pathname, as constructed by vim
from %:p:h
, is being treated by CreateProcessA()
as if it were a sequence of bytes in the Windows code page. You can see the result.
There's probably no local fix for this. Using 8.3 names (:8
) won't fix this at all. But fiddling with vim
's encoding
variable might ameliorate it to an extent (although it will affect more than just this, and isn't the correct way to address the problem). You'll have to talk to Bram Moolenaar. (Consulting the vim
7.3 bug list, I find that you can also talk to this person, although convincing M. Moolenaar that kikuchan is not alone is still a good idea.)
öä
in Vim itself?