Я не знаю почему, но эта тема, похоже, плохо документирована и покрыта спорами, поскольку никто не знает реального ответа (за исключением, может быть, г-на Муленара, который редко отвечает в любом случае).
Итак, в основном я поднял дискуссию здесь, и она быстро умерла, вероятно, потому, что есть не слишком много людей используют Vim в режиме терминала в Windows.
Мои настройки кодировки выглядят следующим образом:
if has('multi_byte')
if empty(&termencoding)
let &termencoding = &encoding
endif
let &encoding = 'utf-8'
let &fileencoding = 'utf-8'
endif
Конечно, у меня нет проблем, работающих под GVim: можно вводить любые символы, а мой исправленный Consolas
для Powerline работает отлично. Проблемы возникают, когда я пытаюсь запустить Vim в режиме терминала. Я использую ConEmu, многофункциональный эмулятор терминала для Windows. Он утверждает, что официально поддерживает Unicode из коробки. Например, я могу запустить следующий тест script:
chcp 65001 & (cmd /c type "%~dpn0.cmd") & pause & goto :EOF
English: texts, web pages and documents
Graves,etc: à á â ã ä å æ ç è é ê ë ì í î ï
Greek: ΐ Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο
Arabic: ڠ ڡ ڢ ڣ ڤ ڥ ڦ ڧ ڨ ک ڪ ګ ڬ ڭ ڮ گ
Full width: @ A B C D E F G H I J K L M N O
Romanian: texte, pagini Web şi a documentelor
Vietnamese: văn bản, các trang web và các tài liệu
Russian: тексты, веб-страницы и документы
Japanese: テキスト、Webページや文書
Yiddish: טעקסץ, וועב זייַטלעך און דאָקומענטן
Hindi: पाठ, वेब पृष्ठों और दस्तावेज
Thai: ข้อความ หน้า เว็บ และ เอกสาร
Korean: 텍스트, 웹 페이지 및 문서
Chinese: 文本,網頁和文件
и я вижу все символы правильно в ConEmu. Да, тест script включает кодовую страницу 65001. Я уже обнаружил, что Vim не может работать с кодовой страницей 65001 вообще, так что, похоже, это не вариант. Кодовая страница по умолчанию в терминале - 437, и я также могу ввести что-то вроде русского в ConEmu с этой кодовой страницей по умолчанию, и она отображается правильно.
Чтение через :h termencoding
, я вижу, что Windows использует Unicode по умолчанию для передачи символов. Тогда я не понимаю, почему, когда я набираю что-то не ANSI в терминале Vim, я вижу ?
символы? Авиакомпания не отображает причудливые символы из исправленного Consolas
. Как настроить истинный Unicode для терминала Vim в Windows? Кстати, &termencoding
сообщает 437.
Может кто-нибудь, раз и навсегда, пожалуйста, объясните мне, является ли поддержка Unicode для терминала Vim на Windows там (и как его настроить) или нет?