Привязки Vim, основанные на ключевой позиции - PullRequest
0 голосов
/ 06 октября 2019

Можно ли заставить Vim распознавать привязки по фактическим позициям клавиш, а не по буквам или символам? Я переключаю свой макет с английского - не могу использовать какие-либо сочетания клавиш.

Допустим, я переключил свой макет на русский и хочу, чтобы Ш действовал как I .

Old dirty keyboard.

Ответы [ 2 ]

3 голосов
/ 06 октября 2019

Позиционные коды клавиш называются коды сканирования и используются и обрабатываются в аппаратном и низкоуровневом системном программном обеспечении. Вы не можете ничего с ними сделать в переносном приложении.

В принципе, можно пойти другим путем и сопоставить буквы русского / кириллического алфавита с соответствующими командами нормального режима, такими как nnoremap ш i и т. Д. Однако, это не имеет особого смысла.

Дело в том, что Vim уже имеет встроенную поддержку международных сопоставлений клавиш в режиме вставки / замены. Просто добавьте set keymap=russian-jcukenwin в vimrc и используйте Ctrl 6 в режиме вставки для переключения между макетами.

В обычном режиме вы всегда должны придерживаться US / Latin. Нет необходимости в переключении языка системы.

2 голосов
/ 07 октября 2019

Я решил свою проблему с помощью xkblayout-state: я просто переключаю свою системную раскладку языка каждый раз, когда открываю Vim или вхожу в обычный режим с помощью этих автозаполнений:

" `0` is `en_US` in my case.
au VimEnter * silent !xkblayout-state set 0
au InsertLeave * silent !xkblayout-state set 0

Также я 'мы нашли это решение на Vi Stack Exchange :

Чтобы использовать langmap на греческом языке, вы можете следовать примеру, приведенному в :h 'langmap', добавив эту строку к вашемуvimrc (Копирование этой строки отсюда не может быть хорошей идеей, поскольку я действительно не уверен в кодировке, вероятно, безопаснее восстановить строку непосредственно из файла справки):

langmap=ΑA,ΒB,ΨC,ΔD,ΕE,ΦF,ΓG,ΗH,ΙI,ΞJ,ΚK,ΛL,ΜM,ΝN,ΟO,ΠP,QQ,ΡR,ΣS,ΤT,ΘU,ΩV,WW,ΧX,ΥY,ΖZ,αa,βb,ψc,δd,εe,φf,γg,ηh,ιi,ξj,κk,λl,μm,νn,οo,πp,qq,ρr,σs,τt,θu,ωv,ςw,χx,υy,ζz
...