Vim usa una codificación incorrecta al invocar comandos en la terminal

Vim usa una codificación incorrecta al invocar comandos en la terminal

Estoy usando Vim (GVim, para ser precisos) en Windows 8 y quiero compilar con el formato habitual :!g++ %, pero el nombre del directorio donde está almacenado mi archivo tiene acentos y Vim parece tener problemas con ellos.

Aquí está el resultado de la invocación :!g++ "%"(Vim no parece agregar comillas alrededor de la ruta del archivo actual ni espacios de escape):

El comando de invocación utiliza una codificación incorrecta

Para mayor claridad, la ruta completa al archivo que se muestra esE:\Programación\Problemas algoritmos\(ns) ACM-ICPC Live Archive 2088 - Entropy.cpp

Cuando uso Vim (en lugar de GVim), los acentos parecen manejarse correctamente, pero aún agrega un \antes (y ), por lo que el comando invocado se ve así

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

Ejecutando estos comandos

:set encoding?
:set termencoding?

En Vim muestra

encoding=latin1
termencoding=cp850

Pero en GVim muestra

encoding=latin1
termencoding=

¿Cómo podría solucionarlo?

EDITAR:

Ya lo intenté con las siguientes líneas en _vimrc:

set encoding=latin1
set termencoding=cp850

Parece que el verdadero problema no son los acentos sino los paréntesis. Por ejemplo, funciona con áéíóú.cpppero no con(a).cpp

Respuesta1

Creo que la forma correcta de resolver esto sería configurar su codificación de términos en su .vimrc. Sin embargo, si realmente no puede hacer que eso funcione, entonces es posible solucionarlo desde el otro extremo. Puede configurar la codificación de su shell cmd.exe usando el chcpcomando. Por ejemplo, esto podría funcionar, pero no lo he probado:

:!chcp cp1252 & g++ "%"

La página de códigos 1252 es un superconjunto de ISO-8859-1 (latin1) que aparentemente su Vim está usando para codificar.

información relacionada