жевание соплей по работе с различными кодировками файлов в vim. кто прошарен - идёт лесом или пишет Ъ камменты. остальным - можно пофтыкать, можно не фтыкать, можно аффтару стчку на телефон или обложить аффтара хуями. можно и не обкладывать, аффтар не абидицца.
цимес в том, что vim-у кодировка редактируемого файла не важна, а встречается всяко-разное. при сбое автоопределения единицы позволяют указывать кодировку файла вручную. соответственно задача редактирования файла в исходной кодировке порой требует наличия мозгов в межплечевой жопе. что не может не радовать.
типовые утилиты для работы с кодировками:
$ recode $ iconv $ enca $ chardet или же chardetect.py
последний позволяет "угадывать" возможные варианты кодировок. must have.
открываем vim, печатаем:
" можно и нужно читать. читать не просто так, а пройти по всем "ссылкам". даёт понять как vim работает с кодировками и что для этого использует. если очень грубо "просуммировать" - получим следующие четыре "внутренних" переменных vim, позволяющих худо-бедно оперировать кодировками. важно учитывать опции сборки vim (+multi_byte) и понимать, что: "The conversion is done with iconv() or as specified with 'charconvert'."(ц)(vim).
допустим, что vim работает в UTF-8 окружении. пример записей в ~/.vimrc: fileencoding определяет сам vim, исходя из результатов записей в ~/.vimrc : UTF - лехко, а из 8-ми битных кодировок корректно отобразит лишь cp1251 (windows-1251). при открытии koi8-r,iso-8859-5,cp866 и прочего "не юникода" весьма вероятен фейл. по сути всё просто: если кракозябры на экране - сравниваем/проверяем кодировку файла с кодировкой, которую "угадал" vim (точнее не угадал). просим vim открыть файл в другой кодировке. в редких случаях - меняем кодировку терминала. пример:
$ vim current_file
ыПРЧЕММУ 4 ЙАМС тбуртпдбцб
Шопвеллс 4 июля РАСПРОДАЖА
можно в ~/.vimrc всю рутину с перекодировкой оформить в виде меню. пример:
скорее обратная сторона медали, а не гемор. плата за гибкость и функционал.
емнип сейчас используют что-то вроде "libchardet", "uchardet/libuchardet" для автоматического подбора кодировки. помогает далеко не всегда. тот же "mcedit" (редактор для миднайта), равно как и многие другие, на автоопределение забивает болт и может работать с несколькими зашитыми внутрь кодировками. с одной стороны - это вроде как правильно: для перекодировки есть специальные утилиты. а с другой стороны - лютые фейлы на "нестандартах".
собсно когда в менюшку запихиваешь опции командной строки - оно всегда выглядит страшно :)
Я не знаю какие проблемы могут быть сейчас, везде utf.
".. а дальше, Петька, начинаются нюансы.."(ц) как говаривал Чапай. два момента: - во-первых, постоянно сталкиваюсь с "не юникодом". в основном это субтитры, оцифровки (причём не обязательно старые) и мыло. архивы e-mail-ов - просто праздник-праздник. особенно сегодня, когда 95% работает на принципе: "нажми на Красную Кнопоську" (если Зелёная Кнопоська не нажимаеццо). оно лежит себе архивами в бэкапах, и смысла переводить на utf нет. от слова вообще. utf-8 занимает по объёму кириллицы где-то в два раза больше места, чем 8-ми битная кодировка, а ucs-2le в полтора раза больше, чем utf-8. ну, ты понел, да? - во-вторых, Слава России! только KOI8-R спасёт Эту Страну! w3m, mutt, vim и koi8-r - жгут, остальное - сасёт! если серьёзно - не всякое getty поддерживает utf. если лазаешь ssh по всяко-разному, то пользуешь что есть, а не то, что хоцца..
Re:баян: vim и multibyte encoding
Ух, какой геморрой-то дикий...
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:49.0) Gecko/20100101 Firefox/49.0