Pull to refresh

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

Reading time2 min
Views26K
Все команды 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-совместимую библиотеку. У кого есть желание и возможность — пишите в личку.
Tags:
Hubs:
Total votes 24: ↑23 and ↓1+22
Comments17

Articles