[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: vim и файлы в русских кодировках (success story)



Идея красивая. Но в скрипте, кажется, есть ошибка. Итак, у меня
LANG=ru_RU.KOI8-R, соответственно в скрипте правлю:

set fileencodings=utf-8,cp1251,cp866,koi8-r
set encoding=koi8-r
set termencoding=koi8-r

Далее проверяю так:
1) запускаю vim
2) :source /path/to/rotenc.vim
3) :e file-in-utf8-or-cp1251 (=> отображается нормально, [перекодировано])
4) F8 => получаю ошибку:
> Обнаружена ошибка при обработке function RotateEnc:
> строка    4:
> E121: Неопределенная переменная: b:encindex
> E116: Параметры для функции match(encstring,"#",b:encindex) заданы
> неверно
> E15: Недопустимое выражение:  match(encstring,"#",b:encindex)
> строка    5:
> E121: Неопределенная переменная: x
> E116: Параметры для функции match(encstring,"#",x+1) заданы неверно
> E15: Недопустимое выражение:  match(encstring,"#",x+1)
> строка    6:
> E121: Неопределенная переменная: x
5) нажимаю ENTER => перекодировано в koi8-r
6) дальнейшие нажатия F8 проходят без ошибок
7) аналогично с первым нажатием F7

Если последовательность обратная -- вначале открываю, а только затем
исполняю перекодировочный скрипт, то нажатия на F8 проходят без ошибок.

Надеюсь, поможет понять в чём дело.

С уважением,
Сергей


On Tue, Nov 08, 2005 at 01:59:58PM +0400, Dmitry-T wrote:
> Ранее я здесь спрашивал про то как просмотреть файл в различных русских
> кодировках. Попробовав разные варианты остановился на доработке скрипта
> предложенного Denis Golubev со ссылкой на www.linuxforum.ru. Получилось
> на мой взгляд очень удобно поэтому и решил выложить кусок своего .vimrc
> (во вложении) со следующими возможностями:
> 
> <F7> меняет по очереди формат концов строк (dos - <CR> <NL>, unix -
> 	<NL>, mac - <CR>)
> 
> <F8> переоткрывает файл в разных кодировках через :e ++enc=кодировка
> 
> <Shift+F8> тоже что и <F8>, но предварительно меняет внутреннюю
> кодировку vim на равную кодировке файла. Это нужно когда vim умничает и
> команда :e ++enc=кодировка для него не указ. Минус этого метода в том
> что когда внутренняя кодировка равна 8bit-cp866, то vim некоторые
> русские буквы неверно показывает, но именно показывает поскольку если
> конвертировать то ничего не портится (сравнить можно с результатом
> работы <F8>).
> 
> <Ctrl+F8> меняет кодировку файла, то есть после его сохранения он будет
> конвертирован
> 
> Статусная строка позволяет контролировать происходящее. Показывает и
> формат файла и кодировки, заодно в нормальном режиме показывает код
> текущего символа в дес. и шестнадцатиричном виде.
> 
> Кодировки: koi8-r cp1251 8bit-cp866 utf-8 ucs-2le.
> где ucs-2le - MS Windows unicode encoding (можно посмотреть содержимое вордовского файла, правда мотать неудобно из-за длинных строк)
> 
> Опробация проводилась в ru_RU.UTF-8
> 
> 
> --
> С уважением
> Телегин Дмитрий



Reply to: