Почему так сложно переназначить Esc в CAPS LOCK в Vim? - PullRequest
19 голосов
/ 27 января 2010

Я видел подсказки vim wiki, и там говорится, что для переназначения Esc в CAPS LOCK вы должны отредактировать следующий код Windows:

REGEDIT4
[HKEY_CURRENT_USER\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,01,00,3a,00,00,00,00,00

Можно ли переназначить Esc в CAPS LOCK, только добавляя или изменяя строки в _vimrc?

Ответы [ 6 ]

23 голосов
/ 27 января 2010

Я рекомендую использовать для этого AutoHotkey.

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

SetTitleMatchMode,2
#IfWinActive,VIM
   CAPSLOCK::ESC
return

#IfWinActive
   CAPSLOCK::CTRL
return

Этот скрипт, например, устанавливает caps для экранирования в vim и контроля везде.

1 голос
/ 19 июня 2014

Еще одна альтернатива, которая хорошо для меня работала, - это использовать инструкции, найденные в этот сайт

По существу: установите Microsoft Keyboard Layout Creator, затем отредактируйте его исходный код, чтобы разрешить переназначение CAPS LOCK и создать свой собственный макет.

1 голос
/ 23 ноября 2010

Также вы можете попробовать это: SharpKeys . Я поменял CapLock и Esc на него.

1 голос
/ 05 ноября 2010

Вы также можете использовать Ctrl-C для выхода (доступно по крайней мере в vim). Что я обычно использую. Однако я обычно меняю элементы управления и capslock и делаю это через настройки реестра в windows и conf клавиатуры в ubuntu.

Редактировать: как любезно отмечает @mMontu, Ctrl-C более жесток, чем Esc: как указано в этот соответствующий вопрос ,

vim не собирается проверять, написали ли вы часть аббревиатура, и он не собирается запускать модные автоматические команды вашего плагины настраиваются при каждом выходе из режима вставки

Я не заметил, потому что мой vimming еще не настолько продвинут.

1 голос
/ 28 января 2010

Отображение должно выполняться на уровне ОС, а не на vim, поэтому сложность связана с ОС. Например, на моем компьютере с Ubuntu в ~/.Xmodmap есть следующее:

! Esc on caps lock
remove Lock = Caps_Lock
keysym Caps_Lock = Escape

Однако я не думаю, что скрипт REGEDIT настолько плох. Это некрасиво, но всего две строчки!

1 голос
/ 27 января 2010

У ключа capslock нет идентификатора ключа vim, поэтому вы должны сделать это с помощью кода сканирования.

Это все равно, что пытаться сопоставить клавишу ctrl или клавишу Shift с чем-то - эти клавиши сами по себе ничего не делают, они являются модификаторами клавиш, поэтому их нельзя поймать одинаково.

...