Vim использует неправильную кодировку при вызове команд в терминале

Vim использует неправильную кодировку при вызове команд в терминале

Я использую Vim (точнее, GVim) под Windows 8 и хочу скомпилировать с помощью обычного редактора :!g++ %, но в имени каталога, где хранится мой файл, есть знаки ударения, и у Vim, похоже, с ними проблемы.

Вот результат вызова :!g++ "%"(Vim, похоже, не добавляет кавычки вокруг текущего пути к файлу и не экранирует пробелы):

Вызывающая команда использует неправильную кодировку

Для ясности полный путь к файлу показан следующим образом:E:\Programación\Problemas algoritmos\(ns) ACM-ICPC Live Archive 2088 - Entropy.cpp

Когда я использую Vim (вместо GVim), акценты, похоже, обрабатываются правильно, но он все равно добавляет \перед ним (и ), поэтому вызванная команда выглядит так:

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

Выполнение этих команд

:set encoding?
:set termencoding?

В Vim показывает

encoding=latin1
termencoding=cp850

Но в GVim показывает

encoding=latin1
termencoding=

Как мне решить эту проблему?

РЕДАКТИРОВАТЬ:

Я уже пробовал со следующими строками в _vimrc:

set encoding=latin1
set termencoding=cp850

Похоже, что проблема не в ударениях, а в скобках. Например, работает с , áéíóú.cppно не с(a).cpp

решение1

Я думаю, что правильным способом решения этой проблемы будет установка кодировки termencoding в вашем .vimrc. Однако, если вы действительно не можете заставить это работать, то, возможно, можно обойти это с другой стороны. Вы можете установить кодировку вашей оболочки cmd.exe с помощью команды chcp. Например, это может сработать, но я не проверял:

:!chcp cp1252 & g++ "%"

Кодовая страница 1252 — это надмножество ISO-8859-1 (latin1), которое, по-видимому, использует ваш Vim для кодирования.

Связанный контент