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

Я видел подсказки 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 ответов

Решение

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

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

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

#IfWinActive
   CAPSLOCK::CTRL
return

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

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

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

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

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

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

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

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

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

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

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

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

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

Переназначить CAPSLOCK к ESC а также CTRL в Windows

Очень хороший инструмент, который я уже описал в этом ответе, дает вам возможность переназначитьCAPSLOCK как для

  1. к ESC (при нажатии в одиночку) и
  2. к CTRL (при нажатии другими клавишами)

Просто воспользуйтесь этим маленьким программным обеспечением с открытым исходным кодом от ililim.

Для этого вам не нужны права администратора и ESC а также CTRL все еще работают, как ожидалось.

Я использую это, чтобы наслаждаться удобным CTRL + anythingнажимает, не повреждая мой мизинец, и переключает режимы в Vim, который я использую через ssh в MobaXterm. Для установки просто следуйте этому описанию.

Другие вопросы по тегам