перекодировка "на лету" (удаленный терминал + vim)

FreeBSD, NetBSD, OpenBSD, DragonFly и т. д.

Модератор: arachnid

GeoF
Сообщения: 181
Статус: BSD guy
ОС: FreeBSD 6 Stable

перекодировка "на лету"

Сообщение GeoF »

[moderated]
отцеплено от http://linuxforum.ru/index.php?showtopic=27457
топик начинается с ответа на нижеприведенный пост пользователя sash-kan:
GeoF
возможно я не прав, но мне кажется, что фраза
Цитата(Cheh @ Oct 28 2006, в 13:43)
много информации на винте в другой кодировке
*
относилась к названиям, а не к содержимому файлов. а это самое содержимое уж точно никуда перекодировать не надо.

[moderared]

Точно не надо? Может подскажете, буду премного благодарен. Файлик в CP1251, локаль KOI8-R. Могу ли я его редактировать в виме без преобразования кодировки и что бы все буковки были читабельны? Возможно я плохо читал доки вима.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: перекодировка "на лету"

Сообщение sash-kan »

(GeoF @ Oct 29 2006, в 22:59) писал(а):Точно не надо? Может подскажете, буду премного благодарен. Файлик в CP1251, локаль KOI8-R. Могу ли я его редактировать в виме без преобразования кодировки и что бы все буковки были читабельны? Возможно я плохо читал доки вима.
без проблем регулярно редактирую файлы в кодировках koi8-r и cp1251, имея умолчальную локаль utf-8:
LANG=ru_RU.KOI8-R luit vim <файл в koi>
LANG=ru_RU.CP1251 luit vim <файл в cp1251>
естественно, нужные локали сгенерированы в системе.
естественно, такие длинные команды вводить — облом. пользуюсь alias-ами:
alias lui='LANG=ru_RU.KOI8-R luit'
alias lur='LANG=ru_RU.CP1251 luit'
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: перекодировка "на лету"

Сообщение sash-kan »

(GeoF) писал(а):А без Х можно обойтись? На той машине Х нет как класса и не предвидится, это гейт. Собирать luit из исходников не хочу, а в портах нет (FreeBSD). Может есть еще какие-нибудь варианты? Использовать iconv не напрягает, но мне кажется, что должен быть еще какой-то, более элегантный выход.

а зачем luit на гейте?
luit нужен на рабочем машине.
LANG='bla-bla' luit ssh user@host
и luit на лету подменит и ввод и вывод.
p.s. к тому же X-ы luit-у вовсе и не нужны:
$ ldd $(which luit)
libm.so.6 => /lib/tls/libm.so.6 (0xb7edf000)
libz.so.1 => /usr/lib/libz.so.1 (0xb7ecc000)
libc.so.6 => /lib/tls/libc.so.6 (0xb7d97000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0xb7f12000)
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
GeoF
Сообщения: 181
Статус: BSD guy
ОС: FreeBSD 6 Stable

Re: перекодировка "на лету"

Сообщение GeoF »

Ok. Писал ПМ, т.к. здесь это уже оффтоп. Модераторы могу указать, что для этого нужно создавать отдельный топик.

Ситуация такая, что на рабочем месте винда. Полностью заменить ее на что либо другое нет возможности из-за специфики работы. На сервер с FreeBSD хожу через telneat. Часть конфигов использует кодировку CP1251. Локаль KOI8-R. На данный момент у меня есть копия конфига в KOI8-R, который я после редактирования преобразую iconv в нужную. Мне бы хотелось избежать этапа конвертирования и напрямую редактировать конфиг в виндовой кодировке. Упоминание Х из-за того, что luit входит в их стандартную поставку. Отдельного порта нет. Есть сорцы, старые. У меня нет желания собирать luit из исходников, что бы у того, кто будет админить этот хост после меня, не возникало вопросов "что это, откуда и как обновлять". Надеюсь теперь ситуация более ясна. Есть идеи?
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: перекодировка "на лету"

Сообщение sash-kan »

(GeoF @ Nov 1 2006, в 12:25) писал(а):Часть конфигов использует кодировку
абсолютно непонятно причем здесь кодировка.
конфиги должны быть в абсолютно совместимой со всем чем угодно кодировке ascii (значения битов 0-127).
или я чего-то не улавливаю?

(GeoF @ Nov 1 2006, в 12:25) писал(а):здесь это уже оффтоп
действительно, оффтоп.
(GeoF @ Nov 1 2006, в 12:25) писал(а):Модераторы могу указать, что для этого нужно создавать отдельный топик
а могут и отделить по-живому. я этого пока не делал. поэтому рисковать не буду.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
GeoF
Сообщения: 181
Статус: BSD guy
ОС: FreeBSD 6 Stable

Re: перекодировка "на лету"

Сообщение GeoF »

Модератору: отделите, плз, 5 последних постов, включая этот, в ветку FreeBSD в отдельный топ. Спасибо!
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: перекодировка "на лету"

Сообщение sash-kan »

(GeoF @ Nov 1 2006, в 23:21) писал(а):Модератору: отделите, плз, 5 последних постов, включая этот, в ветку FreeBSD в отдельный топ. Спасибо!
хоть я и не модератор, но рискнул попробовать. прихватив еще один пост. вроде получилось.
GeoF
заголовок топика доступен Вам для редактирования.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
GeoF
Сообщения: 181
Статус: BSD guy
ОС: FreeBSD 6 Stable

Re: перекодировка "на лету"

Сообщение GeoF »

Может кому-то интересно будет. Для себя я эту проблему решил так. Кусок .vimrc:

Код: Выделить всё

set  wildmenu
set  wcm=<Tab>
menu FEnc.cp1251    :set fenc=cp1251<CR>
menu FEnc.koi8-r    :set fenc=koi8-r<CR>
menu FEnc.cp866     :set fenc=ibm866<CR>
menu FEnc.utf-8     :set fenc=utf-8<CR>
menu FEnc.ucs-2le   :set fenc=ucs-2le<CR>
map  <F8> :emenu FEnc.


Редактирую файлик в KOI8-R, потом по F8 выбираю нужную кодировку, сохраняю файлик с другим именем в целевой кодировке. Спасибо шикарному обсуждению vim'а в общем форуме :)
Спасибо сказали:
Аватара пользователя
evil
Сообщения: 149

Re: перекодировка "на лету"

Сообщение evil »

GeoF писал(а):
27.02.2007 15:37
Может кому-то интересно будет. Для себя я эту проблему решил так. Кусок .vimrc:

Код: Выделить всё

set  wildmenu
set  wcm=<Tab>
menu FEnc.cp1251    :set fenc=cp1251<CR>
menu FEnc.koi8-r    :set fenc=koi8-r<CR>
menu FEnc.cp866     :set fenc=ibm866<CR>
menu FEnc.utf-8     :set fenc=utf-8<CR>
menu FEnc.ucs-2le   :set fenc=ucs-2le<CR>
map  <F8> :emenu FEnc.


Редактирую файлик в KOI8-R, потом по F8 выбираю нужную кодировку, сохраняю файлик с другим именем в целевой кодировке. Спасибо шикарному обсуждению vim'а в общем форуме :)

А что это за диковинные конфиги в кодировке cp1251?
Спасибо сказали: