сменить раскладку в виме, не меняя системной

и другие vi-подобные редакторы

Модератор: /dev/random

Se9a
Сообщения: 67
ОС: openSUSE 11

сменить раскладку в виме, не меняя системной

Сообщение Se9a »

Поскольку существующие способы переключения раскладки при работе в utf-8 не очень удобны (langmap вообще не работает, keymap требует других хоткеев, map не работает для комбинаций типа zv и др.), поэтому возникла такая идея: чтобы в нормальном режиме всегда была включена латинская раскладка, а при переключении в режим вставки или командный режим - включалась текущая системная раскладка. Помогите реализовать фишку. Наверно, должно быть что-то следующее. В нормальном режиме устанавливалась независимый от системы способ переключения раскладки с включенной английской раскладкой:

set keymap=russian-jcukenwin
set iminsert=0

При переходе в режим вставки или командный режим, способ переключения возвращался на системный:

set keymap=''

Только как такую функцию реализовать?
Спасибо сказали:

Аватара пользователя
ZyX
Сообщения: 355
ОС: Gentoo

Re: сменить раскладку в виме, не меняя системной

Сообщение ZyX »

Se9a писал(а):
20.12.2008 16:01
Только как такую функцию реализовать?

:h :autocmd
:h InsertEnter
:h InsertLeave

То есть, примерно так:

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

if !exists("g:auChKeymapLoaded")
    augroup ChKeymap
        autocmd!
        autocmd InsertEnter * set keymap=russian-jcukenwin | set iminsert=0
        autocmd InsertLeave * set keymap="
    augroup END
endif
let g:auChKeymapLoaded=1
Спасибо сказали:

Se9a
Сообщения: 67
ОС: openSUSE 11

Re: сменить раскладку в виме, не меняя системной

Сообщение Se9a »

Что-то я не догоняю... как в vim'е установить латинскую раскладку, если системная раскладка - русская?

set russian-jcukenwin не позволяет такого (как я понял, с его помощью можно
только переключиться с текущей системной на альтернативную раскладку, установив set iminsert=1. Соответственно при iminsert=0 просто включается системная раскладка).

Всё, догнал. Никак. Но можно использовать патч, включающий поддержку utf-8 для langmap и тем самым полностью решающий первоначальную проблему переключения раскладок:
http://lostclus.linux.kiev.ua/%D0%94%D1%80...ngmapmb-4.patch
или
http://lostclus.linux.kiev.ua/Другие_работы/Патчи

патч для 7.1, но я патчил последний 7.2 и ничего, работает.
Спасибо сказали: