Re: Как менять кодировки а vim
On 2003.03.20 at 19:17:12 +0200, Andrey aka Longot wrote:
>
> VBW> 1. Объяснить vim-у что кодировка у файла не такая, как он подумал, а
> VBW> вот такая:
> VBW> :e ++enc=имя-кодировки
> VBW> (эта операция перечитывает текущий файл с диска, поэтому ее стоит
> VBW> производить либо до первого изменения, либо сраду после сохранения)
>
> Пытался так сделать
> пишу следующее :e ++enc=KOI-8
В смысле - файл в KOI-8, а текущая локаль 1251?
> на что мне отвечают [NOT converted][unix] 87L, 2755C
> Может я нето имя кодировки пишу :)
В принципе, можно указывать любое имя кодировки, которое понимает
системный iconv. Список можно посмотреть с помощью iconv --list.
Имена там case insensitive.
Но у iconv-а и у большинства основанных на нем перекодировщиков
есть одна большая засада - встретив хотя бы один-единственный символ,
который в выходной кодировке непредставим, он ломается и отказывается
конвертировать что бы то ни было. У vim именно это приводит к появлению
сообщения not converted.
Наиболее надежный способ борьбы с этим - запускать vim в юникодной
локали (или хотя бы с юникодным внутренним представлением)
В unicode представимы все символы прочих кодировок.
При этом, правда, возможно налететь на not converted при сохранении,
но крайне маловероятно. Поскольку большинство таких нехороших
символов клавиш на клавиатуре не имеет. И потом ты будешь точно знать,
что ты такого в текст навводил.
Или можно просто запустить (g)vim в той локали кодировка которой
соответствует кодировке файла. Надо, правда, озаботиться тем, чтобы
при этом шрифт был соответствующий. Это делается раскладыванием
по каталогам /etc/X11/<имя локали>/app-defaults/ файликов Vim
содержащих что-то вроде
:r /etc/X11/ru_RU.KOI8-R/app-defaults/Vim
Vim.font: -rfx-fixed-medium-r-normal--20-*-*-*-*-*-koi8-r
Соответственно, для ru_RU.CP1251 имя шрифта должно кончаться на
microsoft-cp1251
а для UTF-8 - на iso10646-1
При конвертировании из 1251 в koi8-r наиболее часто встречающиеся
"нехорошие" символы это типо
Reply to: