6 апреля 2013

Vim и переключение раскладки клавиатуры

VIM
Все команды Vim нужно вводить на английском языке. Если основной текст вводится на каком-либо другом языке, то это представляет из себя проблему, т.к. нужно часто переключать раскладку. Одно из решений представлено тут, однако оно заставляет привыкать к новой горячей клавише для переключения раскладки. Так же существует множество платформенно-зависимых решений с вызовом тех или иных утилит. Целью плагина vim-xkbswitch является предоставить единое поведение для многих операционных систем и языков.

Предысторию разработки плагина с моей стороны можно посмотреть тут, со стороны Алексея тут и тут.

Плагин использует платформенно-зависимые библиотеки для смены раскладки средствами операционной системы. На данный момент поддерживаются:

  1. UNIX / X Server через библиотеку xkb-switch
  2. Windows 32/64bit, для которой пришлось сделать свой велосипед
  3. Mac OS X через Xkbswitch-macosx


Так что кроме непосредственной установки плагина в Vim необходимо эти библиотеки скачать и указать в конфиге Vim, откуда эти библиотеки загружать. Например, под Windows работающий функционал можно получить так:

  1. Скачать и установить плагин: отсюда либо отсюда
  2. Скачать библиотеку переключения языка (бинарные файлы для 32-х бит и для 64-х бит, около 5kb) и скопировать её в корневую директорию вима
  3. Добавить в vimrc следующие строки:
    let g:XkbSwitchEnabled = 1 
    let g:XkbSwitchIMappings = ['ru']


Приближаемся к ещё одной интересной возможности плагина — добавление локализованных горячих клавиш. Например, если я в режиме редактирования нажму <C-N>v, то у меня отобразится NerdTree. Но если я редактирую текст на русском языке, то будет нажато "<C-N>м" и плагин, естественно, не запустится. Однако если опция плагина «g:XkbSwitchIMappings» установлена, то плагин переберёт все маппинги режима редактирования с создаст аналогичные локализованные, т.е. добавит для меня "<C-N>м".

По умолчанию из коробки поддерживаются маппинги только для русского языка. Однако плагин умеет загружать языковые карты из файла, что позволит создать локализованные imap'ы для любого языка. Под Windows это может помочь сделать charmapgen.

Если есть желание получить работающий плагин под другую ОС, то нужно сделать Vim-совместимую библиотеку. У кого есть желание и возможность — пишите в личку.
Теги:vimgvimkeyboard layoutраскладка клавиатурыwindowslinuxxserver
Хабы: VIM
+22
21,8k 99
Комментарии 17
Похожие публикации
Системный администратор Linux
от 60 000 ₽ZonatelecomТулаМожно удаленно
Junior Clojure Developer
от 70 000 до 150 000 ₽Health SamuraiСанкт-ПетербургМожно удаленно
DevOps
от 120 000 до 150 000 ₽deeplayНовосибирскМожно удаленно
Системный администратор Linux
от 130 000 до 130 000 ₽Таможенная картаМосква
Программист Python (Middle), прикладное ПО, Embedded Linux
от 80 000 до 150 000 ₽NetPingМожно удаленно
Лучшие публикации за сутки