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

в 17:50, , рубрики: gvim, keyboard layout, linux, vim, windows, раскладка клавиатуры, метки: , , , , ,

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

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

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

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

Так что кроме непосредственной установки плагина в 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.

Если есть желание получить работающий плагин под другую ОС (например, под Mac OS), то нужно сделать Vim-совместимую библиотеку. У кого есть желание и возможность — пишите в личку.

Автор: DeXPeriX

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js