TL; DR
:r! echo éèà | c:\cygwin\bin\iconv -f cp850 -t cp1252
Допущения
Мне удалось воспроизвести вашу проблему на моем компьютере с Windows 10 с помощью gvim 7.4, установленный через установщик Windows для gvim.
У меня также есть cygwin на моей машине, на котором у меня iconv
, и его полный путь c:\gygwin\bin\iconv
.
Предложенорешение
По-видимому, gvim ожидает, что вывод оболочки Windows будет в cp1252, потому что это сработало для меня:
:r! echo éèà | c:\cygwin\bin\iconv -f cp850 -t cp1252
Я проверил результаты, и Vim правильно вставил utf-8 символов для символа в моем документе.
У меня нет эквивалента iconv
, который является родным для Windows, но если у вас есть Cygwin, вы можете добавить c:\cygwin\bin
в путь к Windows, и команда должнане требует явного пути.
Эпилог
Гадость.Это безобразноРешение работает, по крайней мере, на моей машине, но я надеюсь, что кто-то найдет и разместит более элегантное решение.
Должен быть способ сообщить gvim, какую кодировку ожидать от оболочки, но я не нашелЭто.Я играл с различными комбинациями настроек encoding
, termencoding
и fileencoding
вместо использования iconv
, но только получал разные неверные результаты.
Эти связанные вопросы сталкивались с похожими проблемами, но их решенияв моих тестах тоже не работало:
Проблема связана с несовпадением кодировки символов между cmd.exe
(по умолчанию :set shell
в vim на Windows) и что ожидает gvim.Я не знаю, почему изменение :set termencoding
не решает проблему.