Двоичный файл Vim 7.4 для Windows не может обрабатывать тайские символы. Нет multi_byte, вместо этого есть multi_byte_ime/dyn?


Как и по крайней мере один другой пользователь Vim / gVim 7.4 для Windows, я хожу по кругу, пытаясь заставить gVim правильно отображать Unicode. В моем случае у меня есть файл .py, содержащий тайские символы. Например, เมษายน.

  • Если в 64-битной Windows 7 я открываю файл в gVim 7.4, в зависимости от того, с какими параметрами я экспериментирую, я получаю либо прямоугольники, либо «линейный шум».

  • Если в Windows я открываю файл в Notepad++, jEdit или редакторе Eclipse PyDev, тайские символы отображаются правильно. Быстро, просто.

  • Если в Windows я открываю файл в Geany 1.23.1 или Bluefish 2.2.5 для Windows, я получаю несколько изящных полей, по одному на тайский символ, все из которых начинаются с x0E, а затем однобайтового шестнадцатеричного кода символа.

  • Если в gVim 7.4, работающем под Mint Linux, я открываю файл, тайские символы отображаются правильно.

Моя первая мысль заключалась в том, что в моем экземпляре Windows gVim мне просто нужно продублировать настройки файлового кодирования из моего экземпляра Linux gVim, например, fileencodings=ucs-bom,utf-8,default,latin1. Я также продублировал termencoding=utf-8 экземпляра Linux.

Все, что было достигнуто, это то, что тайские символы отображались как случайная строка «линейного шума», а не, скажем, по одному пустому квадрату на каждый тайский символ.

Как подтверждают сообщения нескольких пользователей gVim 7.4 для Windows, в gVim 7.4 команда :version перечисляет multi_byte_ime/dyn, но НЕ multi_byte. См., в частности:

Полная поддержка Vim UTF-8 в Windows

Это отличается от экземпляра gVim 7.4, работающего в Linux, где :version ДЕЙСТВИТЕЛЬНО перечисляет multi_byte, но НЕ включает multi_byte_ime/dyn.

Очевидно, что multi_byte_ime относится к методу ввода, тогда как multi_byte, похоже, поддерживает многобайтовые символы (?). Каким бы ни было значение двух разных выходов «: version», я просто не могу заставить gVim 7.4 для Windows отображать тайские символы, тогда как gVim 7.4 в Mint Linux делает это сразу.

На данный момент я пытаюсь найти путь вперед. Я ходил по кругу, по кругу и по кругу, читая разные форумы и экспериментируя с различными параметрами, которые позволяют gVim 7.4 для Windows отображать тайские символы. Пока я никуда не продвинулся.


person RBV    schedule 07.04.2014    source источник


Ответы (1)


Распакуйте iconv.dll и libintl.dll по ссылкам на странице загрузки vim в разделе библиотека iconv< /strong> и более новую международную библиотеку и установите их, как указано на вышеупомянутой странице загрузки vim.

Обновление:

Вам нужно будет получить iconv.dll из сборки win32 iconv. и intl.dll из сборки win32 gettext. Вы можете получить доступ к файлам обоих из SourceForge.

Во-первых, следуйте libiconv-win32 на странице SourceForge. Нажмите на последнюю версию 1.9.1 на дату этого ответа. Нажмите на это и загрузите zip-файл. (В настоящее время libiconv-1.9.1.bin.woe32.zip). ZIP-файл содержит файл iconv.dll в подкаталоге bin. Поместите iconv.dll в тот же каталог, что и gvim.exe.

Затем перейдите по ссылке gettext-win32 на странице Sourceforge, указанной выше. Нажмите на последнюю версию (0.13.1 на дату этого ответа) и загрузите zip-файл среды выполнения (в настоящее время gettext-runtime-0.13.1.bin.woe32.zip). Этот zip-файл содержит файл intl.dll в подкаталоге bin. Скопируйте его в тот же каталог, что и gvim.exe, переименовав его в libintl.dll. Это может перезаписать уже существующий файл.

person Roland Smith    schedule 07.04.2014
comment
А, спасибо. Однако обе ссылки указывают на sourceforge.net/projects/gettext, что указывает на gettext-tools-0.12. bin.woe32.zip. И этот ZIP-файл не содержит НИКАКИХ DLL. Нужно искать gettext-runtime-0.13.1.bin.woe32.zip, чтобы найти intl.dll. Для iconv.dll необходимо найти libiconv-1.9.1.bin.woe32.zip. Страница, связанная со страницей загрузок Vim, не упрощает эту задачу. В соответствии с инструкциями я переименовал файл intl.dll по умолчанию в BACkUPintl.dll, скопировал intl.dll в папку vim.exe и переименовал его в libintl.dll. И он по-прежнему не отображает тайские символы. Вздох - person RBV; 08.04.2014
comment
@RBV Я расширил ответ и попытался сделать его более конкретным. Вы также добавили libiconv.dll? Обратите внимание, что вам также нужно будет использовать шрифт, содержащий рассматриваемые символы. - person Roland Smith; 12.04.2014
comment
Спасибо, но это не работает. Для начала gettext-tools-0.13.1.bin.woe32.zip не содержит intl.dll. Во-вторых, какой бы ни была основная проблема gVim 7.4 в Windows 7, связанная с отображением тайских символов, эту проблему слишком легко решить с помощью других редакторов (несколько щелчков мыши, и готово) или даже с gVim, работающим на Mint Linux (без дополнительных действий). требуется действие.) Не нужно искать в Интернете файлы для изменения шрифта. Так что мое исправление - просто использовать другой редактор в Windows. - person RBV; 14.04.2014
comment
Файл intl.dll находится в среде выполнения gettext, а не в инструментах gettext! Но вы, безусловно, правы в том, что Windows — бесплодная почва для программного обеспечения с открытым исходным кодом. В основном потому, что среда по умолчанию настолько бесплодна. - person Roland Smith; 14.04.2014
comment
Я нашел способ получить gettext-runtime-0.13.1.bin.woe32.zip и libiconv-1.9.1.bin.woe32.zip, приобрел intl.dll и iconv.dll, а затем сохранил две библиотеки DLL, intl.dll как libintl.dll в том же каталоге, что и gvim.exe. Не работает. Это был мой последний раунд по этому вопросу. Финис. - person RBV; 16.04.2014