Автоопределение кодировок в vim
Когда я жил в идеальном мире фриланса на европейцев и собственных проектов исключительно с UTF-8 в исходниках, я был счастлив. Запускал vim - и всегда получал читаемый код с читаемыми комментариями. Никаких проблем с кодировками. И не думал даже о них.
А потом приспичило мне поработать в офисе. Где кондиционер и живые люди. И кот не отрывает каждые пять минут от работы, чтобы потребовать очередную банку консервов. И началось. Весь код здесь писался под виндой. В CP1251 и с виндовыми переводами строк. Иногда приходится исследовать или даже править скрипты клиентов – и там чаще всего то же самое. Нет, ничего плохого в виндовой кодировке нет (кроме того, что она виндовая, конечно, но из красноглазия я вроде вырос), но работать-то? Дайте ответ! Не дают. Сам нашёл. К тому же ничего сложного в чтении :help нет.
Так вот: достаточно дописать в .vimrc две строки. Одну для кодировки и одну для концов строк:
set fencs=utf8,cp1251
set ffs=dos,unix
UTF перед CP1251 – это существенно. В противном случае всё будет определяться как CP1251, и получатся более потивные кракозябры, чем раньше.
Можно ещё добавить информацию о текущей кодировке в статусную строку. У меня это сделано так (первые две строки – на самом деле одна, я разбил, чтобы она на сайдбар не налезла):
set statusline=%<%f%h%m%r%=[%{&fileformat}]
[%{&fileencoding}]\ enc=%{&encoding}\ 0x%B\ %l,%c%V\ %P
set laststatus=2
![[rss]](images/rss.gif)
ZYV
Плохого тут ещё как есть, и ничего красноглазого в этом нет. CP1251 - это плохая кодировка, заявляю со всей ответственностью. Она однобайтная и поэтому на западноевропейские символы там места после кириллических не хватило. Поэтому в одном документе не могут, например, оказаться áccèntş и русские буквы.
Задирает невыносимо. Все CP1251 немедленно изживаю в UTF-8 с Unix line endings. Благо Komodo умный.
22.08.2008 // 12:02 [ ссылка : ответить ]
Ответ от Автора
ş — это не акцент. это как-то по-другому называется, по-моему. Не помню, к сожалению. А плохого конечно есть, но пока не нужны тексты на нескольких языках — всё-таки нет.
Ну и к тому же legacy. Конвертировать все исходники (что не так страшно) + всё, что есть в базе + выискивать все места, где явно выставлена кодировка для коннектов к базе или отдаётся в Content-type юзеру (напомню: legacy)... Ну его нафиг.
Как однобайтная кодировка CP1251 не хуже других и даже лучше, например, чем КОИ (жуть жуткая и уродство уродское и уродливое). Не считая того, что к тому моменту, когда она создавалась, их был уже вагон, в том числе ISO и ГОСТ.
22.08.2008 // 12:13 [ ссылка : ответить ]
ZYV
ç и ş, обозначающие, например, звуки "ч" и "ш" в турецком, называются седилями ( [ ссылка ] ). Мне тексты постоянно требуются комбинированные, т.к. пишу на французском, и поэтому восславил тот день, когда появился UTF-8.
Самое забавное, что в NT ведь уже была заложена поддержка MBCS, почему они не стали прививать нормальную локаль - непонятно.
Про KOI-8 согласен, некоторые олд-скуильные красноглазеры до сих пор радостно показывают RH7.3 с KOI-8 локалью, надеясь на восторженную реакцию ;-)
22.08.2008 // 12:28 [ ссылка : ответить ]
Ответ от Автора
Вот, правильно! Спасибо.
В винде не стали скорее всего для совместимости. Внутри там всё юникодное с ещё с NT4.
Я сам с КОИ слез году в 2005 где-то только. Когда краснота с глаз сошла.
22.08.2008 // 12:32 [ ссылка : ответить ]