Поскольку существующие способы переключения раскладки при работе в utf-8 не очень удобны (langmap вообще не работает, keymap требует других хоткеев, map не работает для комбинаций типа zv и др.), поэтому возникла такая идея: чтобы в нормальном режиме всегда была включена латинская раскладка, а при переключении в режим вставки или командный режим - включалась текущая системная раскладка. Помогите реализовать фишку. Наверно, должно быть что-то следующее. В нормальном режиме устанавливалась независимый от системы способ переключения раскладки с включенной английской раскладкой:
set keymap=russian-jcukenwin
set iminsert=0
При переходе в режим вставки или командный режим, способ переключения возвращался на системный:
set keymap=''
Только как такую функцию реализовать?
сменить раскладку в виме, не меняя системной
Модератор: /dev/random
Re: сменить раскладку в виме, не меняя системной
: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
Re: сменить раскладку в виме, не меняя системной
Что-то я не догоняю... как в 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 и ничего, работает.
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 и ничего, работает.