Почему так сложно переназначить Esc в CAPS LOCK в Vim?

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

REGEDIT4
[HKEY_CURRENT_USERKeyboard 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 ответов


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

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

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

#IfWinActive
   CAPSLOCK::CTRL
return

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


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

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


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

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

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


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


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

Edit :как @ mMontu любезно отмечает, Ctrl-C более жесток, чем Esc: как указано в этот вопрос,

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

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


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

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