У меня в Линуксе теперь используется кодировка 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)