O Vim usa codificação incorreta ao invocar comandos no terminal

1

Estou usando o Vim (GVim, para ser preciso) no Windows 8 e quero compilar com o usual :!g++ % , mas o nome do diretório onde meu arquivo está armazenado tem sotaque e o Vim parece ter problemas com eles.

Aqui está o resultado de invocar :!g++ "%" (o Vim não parece adicionar as aspas ao redor do caminho do arquivo atual nem escapa espaços):

Pormotivosdeclareza,ocaminhocompletoparaoarquivomostradoéE:\Programación\Problemasalgoritmos\(ns)ACM-ICPCLiveArchive2088-Entropy.cpp

QuandousoVim(emvezdeGVim),osacentosparecemsermanipuladoscorretamente,masaindaadiciona\antesde(e),entãoocomandochamadoseparececom

g++"E:\Programación\Problemas algoritmos\(ns\) ACM-ICPC Live Archive 2088 - Entropy.cpp"

Executando esses comandos

:set encoding?
:set termencoding?

No Vim mostra

encoding=latin1
termencoding=cp850

Mas no GVim mostra

encoding=latin1
termencoding=

Como eu poderia resolver isso?

EDITAR:

Eu já tentei com as seguintes linhas em _vimrc:

set encoding=latin1
set termencoding=cp850

Parece que o problema real não é com acentos, mas com parênteses. Por exemplo, ele funciona com áéíóú.cpp , mas não com (a).cpp

    
por Daniel Castro 01.12.2013 / 04:29

1 resposta

0

Eu acho que a maneira correta de resolver isso seria definir seu termencoding em seu .vimrc. No entanto, se você realmente não consegue fazer isso funcionar, pode ser possível contornar isso do outro lado. Você pode definir a codificação do seu shell cmd.exe usando o comando chcp . Por exemplo, isso pode funcionar, mas eu não testei:

:!chcp cp1252 & g++ "%"

A página de código 1252 é um superconjunto do ISO-8859-1 (latin1) que seu Vim aparentemente está usando para codificação.

    
por 01.12.2013 / 19:41