pegar - qué tecla se presiona para cambiar al modo normal en vim
Cómo reasignar las teclas del teclado para evitar RSI en VIM (8)
Nota: no soy un médico, solo otro mecanógrafo que sufrió de dolor en la muñeca.
En mi experiencia, solo asignando Caps a Ctrl (o intercambiando los dos si es necesario tener Caps ) y usando Ctrl + [en lugar de Esc hace una gran diferencia. Ctrl + [ no requiere una asignación adicional en vim ya que es equivalente a Esc . Si puedes enseñarte este pequeño cambio, reducirás mucho tu movimiento si consideras la frecuencia con la que utilizas Esc in vim.
La asignación de Caps a Ctrl no se puede hacer dentro de vim y tendrá que hacerse en todo el sistema, sin embargo, tener Ctrl en la ubicación más conveniente también ayudará en otras aplicaciones que usan combinaciones de Ctrl . Existen diferentes métodos de reasignación de claves según el sistema operativo que esté utilizando. Algunas opciones comunes son:
- xmodmap (GNU / Linux)
- KeyRemap4Macbook (OSX)
- KeyTweak (Windows)
Si bien esto probablemente mejorará su situación, realmente debería considerar ver a un médico y / o comprar un teclado de diseño más ergonómico si el dolor persiste. Tengo una versión anterior de Kinesis Advantage que recogí y que usé en Ebay por alrededor de $ 100 (USD) y no podría estar más feliz. Las teclas se pueden programar directamente en el teclado, por lo que no se necesita ningún software para intercambiarlas o crear sus propias macros de teclado para las pulsaciones de teclas utilizadas con frecuencia.
Edición: veo que en tu publicación también mencionas combinaciones como Ctrl + f y Shift + 2 que requieren que gires la muñeca para presionar. Me parece que solo estás usando las teclas Ctrl y Shift en el lado izquierdo de tu teclado. Realmente deberías usar ambos conjuntos de estas teclas, usando la que esté en la mano opuesta a la tecla que estás modificando. Eso anularía este movimiento de la muñeca.
Espero que esto no se vea como un intento de iniciar una conversación por el simple hecho de hacerlo.
Uso mucho vim (5-10 horas al día) y noté que mi muñeca izquierda es la primera en comenzar a doler. El diseño estándar del teclado (ver imagen a continuación) está casi garantizado para darle artritis.
Actualmente, he remapeado
- Ctrl a Shift
- Desplazar a bloqueo de mayúsculas
- Bloqueo de mayúsculas a Ctrl
Esto ayuda con comandos comunes como Ctrl f o Shift 2 ( @ ), pero todavía tengo que torcerme la muñeca para obtener esas combinaciones. ¿Hay alguna forma de reasignar las teclas para evitar que se tuerza en la muñeca izquierda (tal vez use la tecla Tab )? Me parece extraño que para un editor de texto diseñado específicamente para programadores, haga un uso intensivo de estas claves. He considerado volver a asignar a la distribución del teclado anterior (ver imagen de abajo), pero no quiero aprender si va a tener los mismos problemas fundamentales que mi reasignación actual.
Asigné tanto Escape (un solo toque) como Ctrl (mantener) a CapsLock:
xmodmap -e "remove Lock = Caps_Lock"
xmodmap -e "remove Control = Control_L"
xmodmap -e "keysym Control_L = Caps_Lock"
xmodmap -e "keysym Caps_Lock = Control_L"
xmodmap -e "add Control = Control_L"
xcape -t 1000 -e "Control_L=Escape" # Fire nothing if 1000ms hold time out
Probablemente estoy arruinando las cosas aquí, pero xmodmap
no es la mejor opción para modificar las asignaciones de todos modos, así que cambiaré eso a pura configuración xkb.
También he cambiado: con; y `con ~, ya que uso: y ~ más a menudo:
xmodmap -e "keycode 47 = colon semicolon"
xmodmap -e "keycode 49 = asciitilde grave"
También uso Compose Key para ser ablo para escribir ūmlauts et c.
En resumen, el cambio más útil que he hecho es mapear el espacio con el líder. Todo tipo de combinaciones de teclas de líder te harán la vida más fácil.
No podía acostumbrarme a H y L para _ y $, ya que no parece funcionar con surround.vim y algunos otros trucos que la gente aconseja.
¡Simplemente no uses flechas!
Cambié a un teclado de Kinesis Advantage , y volví a asignar Caps Lock a Esc. Esto eliminó de manera efectiva cualquier dolor de muñeca que sentí como usuario de Vim. Una vez más, no soy un médico, pero al ver cómo se mueven mis manos, no veo que mi muñeca se tuerza incluso cuando presiono Shift.
Probablemente podrías hacer algunas extraordinarias remociones a las teclas para minimizar aún más la tensión, pero para ser honesto, nunca sentí la necesidad.
No es una solución de $ 0, me temo, pero fue muy efectiva para mí.
Haría esta parte como un comentario a la respuesta de Randy sobre Esc si pudiera, pero exige un poco más de espacio. Hay un caso de uso importante en el que no puede simplemente volver a asignar las claves de Windows: Windows 7 sin derechos de administrador. Es bastante común en un entorno empresarial; por lo menos, me describe y ese teclado en la foto. El repositorio de keymapper tiene información decente sobre este tema:
Nota importante para los usuarios de Windows 7
Windows 7 no admite asignaciones de claves por usuario. Hasta la próxima versión de Key Mapper, tendrá que cambiar manualmente a las asignaciones de ''Inicio'' desde el menú Asignaciones, reiniciar para cambiar las asignaciones, y tendrá que tener acceso administrativo a su computadora para establecer asignaciones de teclas que funcionarán en Windows 7.
Lo mismo es cierto para cualquier herramienta de Microsoft, KeyTweak, SharpKey, etc.
Así que tendrás que usar algo como AutoHotkey . Personalmente, prefiero mapear Caps Lock directamente a Esc para Vim, y he tenido problemas al mapearlo con Ctrl:
#IfWinActive ahk_class Vim
*CapsLock::Esc
#IfWinActive
Otra alternativa que me gusta es inoremap jj <Esc>
. A menos que planees escribir sobre un hajj o algo, funciona bastante bien.
Más a tu punto
En cualquier caso, ¿ha considerado hacer lo anterior para escapar fácilmente y luego volver a asignar algunos de los comandos del modo de inserción de difícil acceso a Alt (golpearlo con el pulgar) y luego usar asignaciones a su líder?
let mapleader=","
nnoremap <leader>f <C-F>
He desarrollado un módulo vim para hacer algunas remappings simples para exactamente este problema:
https://github.com/vim-scripts/vim.ergonomic
Lo más importante que hace es facilitar la escritura de conjuntos de corchetes. También hace que sea mucho más fácil entrar en modo de comando (jj-> ESC)
Se basa en el principio de que casi nunca usaste la tecla J durante la edición, pero está justo ahí en la fila de inicio ... ¡así que abusemos de ella!
De la documentación:
Remapping commonly used commands
key combo mapping purpose
; : removes the need to hit Shift to use commands
jj <ESC> can exit edit mode quickly and easily
Jj j can type ''j'' when you need to
JJ J can type ''J'' when you need to
Making it easier to insert various kinds of braces:
key combo mapping purpose
JU ()<left> easier to create parenthesis
JI []<left> easier to create square brackets
JM {}<left> eaiser to create curly braces
J< <><left> easier to create carrot braces
Make it easier to move small distances (especially useful with braces commands):
key combo mapping purpose
JL <left> move left in insert mode
JH <right> move right in insert mode
Removing any need for enter, backspace or delete:
key combo mapping purpose
JB <esc>ldbi delete the previous word
JW <esc>dwi delete the next word
JO <esc>oi insert line and go to it
Siempre presiono la tecla ctrl izquierda acurrucando mi meñique y presionando con el primer nudillo. Encuentro que esto requiere menos movimiento de la mano.
Actualizar
No encuentro a Shift
incómodo, así que no puedo ayudarte con eso. Sin embargo, el control me molesta, e incluso con mi técnica de nudillos, prefiero evitarla siempre que sea posible. Por lo tanto, para el modo de inserción (y el modo de línea de comandos) uso un líder ;
en lugar de Ctrl
. P.ej
:map! ;w <C-W>
:map! ;a <C-A>
:map! ;r <C-R>
:ino ;t <C-T>
:ino ;d <C-D>
Tienes la idea
En el modo normal, uso v
y V
lugar de Ctrl+F
y Ctrl+B
(solo uso el modo visual en bloque), aunque imagino que la mayoría de la gente preferiría asignar diferentes teclas, como <Space>
y -
para la paginación ( -
isn no es realmente necesario). En lugar de F
se puede buscar hacia adelante con f
, y luego pulsar,.
Nunca he visto mucho punto en Ctrl+D
o Ctrl+U
Sin embargo encuentro z.
, z<Enter>
, y z-
útil para desplazar la línea con el cursor hasta la parte central, superior e inferior de la ventana, respectivamente. H
, M
y L
también son útiles para mover el cursor por la pantalla. Pero en general prefiero usar /
con ''incsearch'' configurado para navegar alrededor.
No hay una forma correcta o incorrecta de hacer esto, estas son solo mis preferencias personales, pero espero que te den una o dos ideas. Intenta experimentar y ver qué funciona para ti.
Sugeriría remapping
- Control de mayúsculas a la izquierda Control
- Control izquierdo para escapar
- Escape to Caps lock
. Si en Linux se puede hacer primero usando setxkbmap -option ''...,ctrl:nocaps''
o cambiando XkbOptions
en /etc/X11/xorg.conf
. Segundo requiere el uso de xmodmap
. Después de alguna actualización del servidor X, no pude hacer funcionar el tercer xmodmap
que también estaba funcionando.
El uso del diseño dvorak (tal vez incluso la programación) que está optimizado para la escritura táctil y las asignaciones como ,s
-> ()<Left>
también podría ayudar.
Nota: Yo tampoco soy médico. Soy mecanógrafa táctil, pero a diferencia de @Randy Morris, nunca sufrí dolor de muñeca, solo moví las llaves a los lugares más convenientes.
Use gorras como ctrl en todo el sistema. (¿Con qué frecuencia se corta / copia / pega?)
Esto también hace ctrl [ trabajar en vim.
Junto uso el plugin vim ''arpegio''.
El arpegio le permite definir los enlaces de vim que se activan cuando se presionan simultáneamente dos teclas.
j k presionado me sirve como ESC .
También el plugin '' surround.vim '' puede ser interesante para ti.
Eliminado todos mis dolores de muñeca.
post scriptum:
Utilice '' vundle ''!
Es, por lejos, el mejor administrador de plugins de vim, y se preguntará cómo podría prescindir, especialmente si usa un vim personalizado en varias máquinas. No se asuste si inicialmente tiene problemas para configurarlo, tómese su tiempo.