2010-01-27 3 views
16

Я видел ВИМ советы вики, и он говорит, что для того, чтобы переназначить клавишу Esc, чтобы CAP ЗАМОК вы должны отредактировать следующие окна код:Почему так сложно переделать Esc в CAP LOCK в Vim?

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 для CAP ЗАМОК лишь добавления или изменения строки в _vimrc?

+0

Извините, у меня есть вопрос: почему вы хотите это сделать? – paxdiablo

+8

paxdiablo, это очень распространено. Зачем? Потому что CAPS LOCK - самый бесполезный ключ, но имеет первоклассную недвижимость. Это гораздо удобнее местоположение, скажем, другого ключа ctrl, или, если вы когда-либо использовали Vim, очень необходимую клавишу ESC. – Jay

+0

Извините, я неправильно понял. Я думал, что вы хотите использовать клавишу ESC как CAPSLOCK. Тем не менее я с трудом понимаю, что слишком много времени будет сохранено путем перемещения клавиши ESC на дюйм или два.Вы на самом деле измеряли время, потраченное в течение всего дня? Возможно, вам стоит подумать о немодальном редакторе :-) – paxdiablo

ответ

21

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

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

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

#IfWinActive 
    CAPSLOCK::CTRL 
return 

Этого сценарий, например, устанавливает колпачки ускользают в Vim, и контроль везде.

+0

AutoHotkey замечательный – alexchenco

+0

@jay, но где же замок блокировки в конечном итоге? – sayth

+0

@sayth Большинство никогда не нуждаются в этом - я прошел без него уже много лет. – Jay

1

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

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

1

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

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

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

+5

Проще:' setxkbmap -option caps: escape' или добавить его в соответствующий раздел конфигурации X/input. – ephemient

+0

@ephemient Спасибо за этот совет. –

+1

Это также можно сделать с помощью графического интерфейса. Перейдите в раздел «Система/Настройки/Клавиатура», откройте вкладку «Макет», откройте диалоговое окно «Параметры». Под заголовком Caps Lock есть список разных вариантов поведения, и один из них - замена Caps Lock и ESC. – hugomg

1

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

Edit: в @mMontu любезно отмечает, Ctrl-C является более жестокой, чем Esc: Как указано в this appropriate question,

ВИМ не будет беспокоить проверки, если вы только что написали часть аббревиатуры, и он не собирается бежать фантазии авто команды ваши плагины настроить каждый раз вы покидаете режим вставки

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

+2

Вы должны знать тонкую разницу между Ctrl-C и ESC: http://stackoverflow.com/questions/5030164/whats-the-difference-between-ctrlc-and-ctrl/5036294#5036294 – mMontu

1

Также вы можете попробовать следующее: SharpKeys. Я сменил CapLock и Esc.

1

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

По существу: Установка Раскладка клавиатуры Творца Microsoft, а затем изменить его исходный код, чтобы переназначение из CAPS LOCK и создать свой собственный макет.

Смежные вопросы