
Estou usando o Vim (GVim, para ser mais preciso) no Windows 8 e quero compilar com o usual :!g++ %
, mas o nome do diretório onde meu arquivo está armazenado tem acentos e o Vim parece ter problemas com eles.
Aqui está o resultado da invocação :!g++ "%"
(o Vim não parece adicionar aspas ao redor do caminho do arquivo atual nem escapa de espaços):
Para maior clareza, o caminho completo para o arquivo mostrado éE:\Programación\Problemas algoritmos\(ns) ACM-ICPC Live Archive 2088 - Entropy.cpp
Quando eu uso o Vim (em vez do GVim), os acentos parecem ser tratados corretamente, mas ele ainda adiciona um \
before (
e )
, então o comando invocado se parece com
g++ "E:\Programación\Problemas algoritmos\\(ns\) ACM-ICPC Live Archive 2088 - Entropy.cpp"
Executando esses comandos
:set encoding?
:set termencoding?
Nos programas do Vim
encoding=latin1
termencoding=cp850
Mas nos programas GVim
encoding=latin1
termencoding=
Como eu poderia resolver isso?
EDITAR:
Já tentei com as seguintes linhas em _vimrc:
set encoding=latin1
set termencoding=cp850
Parece que o verdadeiro problema não está nos acentos, mas nos parênteses. Por exemplo, funciona com, áéíóú.cpp
mas não com(a).cpp
Responder1
Acho que a maneira correta de resolver isso seria definir seu termencoding em seu .vimrc. No entanto, se você realmente não conseguir fazer isso funcionar, talvez seja possível contornar isso do outro lado. Você pode definir a codificação do seu shell cmd.exe usando o chcp
comando. Por exemplo, isso pode funcionar, mas não testei:
:!chcp cp1252 & g++ "%"
Codepage 1252 é um superconjunto de ISO-8859-1 (latin1) que seu Vim aparentemente está usando para codificação.