Страницы

Поиск по вопросам

понедельник, 15 октября 2018 г.

Vim в командный режим всегда с английской раскладкой клавиатуры

Система Ubuntu 14.04, Vim 7.4.52. При редактировании не англоязычных текстов приходится работать с разными раскладками клавиатуры. Например, в системе установлены английская, русская, украинская раскладки. В Vim редактирование происходит в командном режиме, который включается клавишей ESC. Нюанс в том, что если редактировать текст кириллицей (включена русская или украинская, e.t.c. раскладка), то перейдя в командный режим по клавише ESC и не меняя раскладку на английскую - ни одна команда не срабатывает. Расскладку в системе меняю по CapsLock и хотелось бы этот хоткей не менять. Гугление дало несколько вариантов решения, в частности назначение другого хоткея (Ctrl+^) внутри самого Vim не меняя системную раскладку. Как вариант можно пользоваться, но хотелось бы более "универсальное" решение, например при нажатии ESC запоминать текущую раскладку в режиме вставки и автоматически переключать раскладку на английский. После выполнения команд и возвращения в режим вставки - возвращать сохраненную раскладку. Вопрос: можно ли сделать чтобы Vim переключал автоматически раскладку на английскую при переходе в командный режим?


Ответ

Решил частично задачу через d-bus
function! SetUsLayout() silent !qdbus org.gnome.SettingsDaemon.Keyboard /org/gnome/SettingsDaemon/Keyboard org.gnome.SettingsDaemon.Keyboard.SetInputSource 0 > /dev/null endfunction
autocmd InsertLeave * call SetUsLayout()
теперь по нажатию ESC и переходе в командный режим клавиатурная раскладка переключается на английскую. Можно даже команду в функции SetUsLayout записать короче:
silent !gsettings set org.gnome.desktop.input-sources current 0
Осталось решить вопрос с запоминанием той раскладки с которой выходили из режима вставки и установки ее, при возврате в режим вставки.

Комментариев нет:

Отправить комментарий