LINUX.ORG.RU

Попытка подправить VIM


0

0

У меня в Линуксе теперь используется кодировка utf-8, и тексты обычно редактируются с помощью vim 6.2. Но при этом осталось также множество текстов в koi8-r. Конечно, с ними можно работать через luit.

Но я заметил, что vim автоматически открывает неуникодовские файлы как Latin-1 -- то есть на экране получаются сплошные крякозябры. В то же время известно, что vim внутри себя всегда использует utf-8, если установлена такая локаль, а все преобразования происходят только при чтении и записи файла. То есть, чтобы заставить vim понимать koi8 в условиях уникодовской локали, нужно лишь добавить перекодировку при чтении и записи тех файлов, которые vim трактует как Latin-1.

Подправлять пришлось совсем немного. Зато теперь юзеру вообще не нужно знать, какой текст он редактирует -- koi8 или utf, всё происходит автоматически.


Инструкции по установке: сначала нужно скачать исходники vim62 с сайта http:/www.vim.org

Затем нужно скачать мои исправления ftp://univ.uniyar.ac.ru/home/land/vim.tar.gz

Файлы userchset.h и fileio.c нужно поместить в каталог src (при этом старый fileio.c будет переписан). Файл fileio.old не нужен, он приведён только для сравнения.

После этого скомпилировать vim как обычно (для utf-8 нужно предварительно запускать ./configure --with-features=big)

А ты конвертни свои тексты командой iconv и живи спокойно :)

PETER ★★
()

это все конечно интересно, но:
:help encoding
:help fenc
:help fencs
:help ++enc
уже давно позволяют редактировать в vim'е файлы,
не особо обращая внимание на кодировку. причем,
безо всяких патчей. :)

anonymous
()
Ответ на: комментарий от anonymous

хотя, если в fencs прописаны несколько кирилических кодировок (utf8, и скажем, koi8-r, cp1251 и cp866), то автоопределение кодировки часто работает не правильно. вот это бы не мешало пофиксить... :/

anonymous
()
Ответ на: комментарий от anonymous

Всё так просто

В .vimrc надо было добавить такую строчку:

set fencs=ucs-bom,utf-8,koi8-r


Главное -- там не должно быть кавычек! В этом-то и была вся хитрость...

lukyanov
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.