windows vim capslock remap

windows - ¿Por qué es tan complicado volver a asignar Esc a CAPS LOCK en Vim?



capslock remap (6)

Vi los consejos de vim wiki y dice que para volver a asignar Esc a CAPS LOCK tienes que editar el siguiente código de 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

¿Es posible volver a asignar Esc a CAPS LOCK solo agregando o modificando líneas en el _vimrc?


La asignación debe realizarse a nivel del sistema operativo en lugar de vim, por lo que la complicación proviene del sistema operativo. Por ejemplo, en mi máquina Ubuntu tengo lo siguiente en ~/.Xmodmap :

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

Sin embargo, no creo que el script REGEDIT sea tan malo. Es un poco feo, ¡pero solo son dos líneas!


No hay un identificador de clave vim para la clave capslock, por lo que tiene que hacerlo con un código de escaneo.

Sería como tratar de asignar la tecla Ctrl o la tecla Mayús a algo. Esas teclas no hacen nada por sí mismas, son modificadores clave, por lo que no pueden quedar atrapadas de la misma manera.


Otra alternativa que me funcionó bien fue usar las instrucciones que se encuentran en este sitio web.

Esencialmente: instale Keyboard Layout Creator de Microsoft, luego edite su código fuente para permitir la reasignación de CAPS LOCK y crear su propio diseño personalizado.


También puede usar Ctrl-C para escapar (disponible al menos en vim). Que es lo que normalmente uso. Sin embargo, comúnmente cambio el control y el bloqueo de mayúsculas, y lo he hecho a través de la configuración del registro en Windows y el teclado Conf en Ubuntu.

Edición: como @mMontu observa amablemente, Ctrl-C es más brutal que Esc: Como se indica en esta pregunta apropiada ,

vim no se molestará en comprobar si acaba de escribir parte de una abreviatura y no ejecutará los comandos automáticos de lujo que han configurado sus complementos cada vez que abandona el modo de inserción

No me había dado cuenta porque mi vimming no es tan avanzado todavía.


También puedes probar esto: SharpKeys . Cambié CapLock y Esc con él.


Te recomiendo que uses AutoHotkey para esto.

Puede hacer un cambio de tecla de acceso por aplicación:

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

Esta secuencia de comandos, por ejemplo, establece mayúsculas para escapar en vim y controlar en cualquier otro lugar.