Vim: Não é possível abrir o diretório de um arquivo se ele contiver letras especiais

3

No Vim eu posso abrir o diretório de um arquivo ativo usando este comando:

:silent ! start %:p:h

No entanto, se o diretório contiver caracteres especiais (como letras escandinavas), estou recebendo um erro. Abaixo está um link para um exemplo.

Oerrodizalgocomo"Não foi possível encontrar o alvo. Verifique se você o escreveu corretamente e tente novamente." (em finlandês). O diretório no exemplo acima é D: \ ölöälä , mas como você pode ver, as letras ö e ä não aparecem corretamente no cmd. Acho que isso causa o erro.

Como posso resolver isso? Eu estou no Win 7 de 64 bits.

    
por martias 01.01.2012 / 11:48

1 resposta

4

Este é um erro de vim .

Não é um problema, ao contrário do que romainl diz em um comentário à pergunta, com cmd . Não tem nada a ver com cmd de fato. Tanto cmd quanto start estão se comportando conforme planejado.

O problema é que vim está usando UTF-8 (veja :help unicode .) para armazenar e manipular a cadeia de comandos, e está passando essa cadeia UTF-8 como está para uma API de programação que não aceita UTF-8 em primeiro lugar. Especificamente: Ele acaba passando a string UTF-8 para a função CreateProcessA() . Mas CreateProcessA() leva cadeias codificadas no Página de códigos do Windows . vim deve converter a string de antemão de UTF-8 para a página de código apropriada (ou para Unicode e chamar CreateProcessW() ). Mas isso não acontece.

Como consequência, a sequência de bytes no seu nome de caminho UTF-8, como construída por vim de %:p:h , está sendo tratada por CreateProcessA() como se fosse uma sequência de bytes na página de código do Windows. Você pode ver o resultado.

Provavelmente não há correção local para isto. Usar nomes 8.3 ( :8 ) não corrigirá isso. Mas mexer com a variável vim encoding pode melhorar até certo ponto (embora isso afete mais do que isso e não seja a maneira correta de resolver o problema). Você terá que falar com Bram Moolenaar. (Consultando a lista de erros vim 7.3, acho que você também pode falar com essa pessoa , embora convencer M. Moolenaar de que kikuchan não está sozinho, ainda é uma boa idéia.)

    
por 01.01.2012 / 20:04