La razón principal por la que me gusta vim sobre emacs es que la distancia de movimiento de mi mano lejos de la fila de inicio es muy baja (incluso como programador). Sin embargo, la única vez que hago esto es salir del modo de inserción, presionando Escape.
Recientemente aprendí que también puedo usar Ctrl + C para salir del modo de inserción. Sin embargo, esto no es realmente una mejora.
¿Cómo puedo salir del modo de inserción sin que mis manos salgan de la fila de inicio y sin afectar masivamente lo que tengo la capacidad de escribir? Nota: Utilizo un vim principalmente vainilla con una distribución de teclado dvorak, aunque también me encantaría escuchar soluciones para una distribución qwerty.
key-bindings
insert-mode
keyboard-layout
escape
durron597
fuente
fuente
Respuestas:
Un enlace común que verá es jj , porque funciona bien para diseños QWERTY si usa el posicionamiento de la fila de inicio.
En ese caso, para escribir un literal
jj
, debe esperar 1 segundo (por defecto) entre escribir el segundo carácter. (ver:help 'timeout'
para más detalles)También hay una
c-o
que lo sacará de la inserción, permitiéndole hacer un comando normal y luego volverlo a insertar.http://vim.wikia.com/wiki/Avoid_the_escape_key
fuente
j
es lac
clave. Entonces esto no sería tan malo (para escribircc
). También podría vincularhh
(qwertyj
key = dvorakh
), que solo me arrancaría si estaba escribiendoshhhhhhh
o algo así.jk
? Encuentre dos teclas adyacentes en Dvorak pero que no sean combinaciones comunes en su idioma preferido.tn
, por ejemplo, es el equivalente posicional dejk
.jk
/kj
salir del modo normal incluso en Dvorak; son las teclas "c" y "v" en un teclado QWERTY, por lo que son fáciles para el puntero izquierdo y los dedos medios.ii
en su lugar. Sí, tiene que mover los dedos de la fila de inicio, pero aún así es cómodo. Y aún más importante, puede alternar entre modos sin mover el dedo.Al lado de las alternativas incorporadas
<C-[>
y<C-c>
de<Esc>
clave citados por otros, otra solución popular es para volver a asignar<CapsLock>
como un escape adicional. Esto tanto en un teclado Qwerty como en Dvorak.De esta manera, puede presionar Esc muy fácilmente con el dedo meñique izquierdo, sin quitar las manos de HomeRow (casualmente, CapsLock es donde solía estar Escape en los teclados cuando se inventó vi).
La reasignación se puede hacer:
en Linux, varía según el entorno de escritorio. Por ejemplo, en Linux Mint / Cinnamon solo es cuestión de seleccionar la opción adecuada en Menú-> Teclado-> Diseños de teclado-> Comportamiento de bloqueo de mayúsculas. Alternativamente, pero con menos facilidad, se puede reasignar a nivel Xorg usando el programa xmodmap y haciendo que ejecute el siguiente
.Xmodmap
archivo:El sistema se puede configurar para ejecutarlo automáticamente en cada inicio de sesión colocando estratégicamente las siguientes líneas de script de shell (suponiendo que
.Xmodmap
esté en su directorio de inicio~
) en la cadena de archivos de inicio de sesión automático:Sin embargo, es complicado, porque los archivos de origen varían según el entorno (de escritorio) utilizado. Como ejemplo, he llamado a xmodmap como una entrada en las "Aplicaciones de inicio" de Cinnamon (que me permite hacer más que la personalización estándar de reasignación de claves GUI).
Algunas personas van más allá y programan la tecla CapsLock para comportarse:
Ctrl
tecla presionándola y sosteniéndola,Esc
tecla presionando y soltándolo rápidamente.Esto se puede hacer en Windows y Mac configurando / programando correctamente la utilidad de reasignación correspondiente (específicamente para las sugerencias de AutoHotkey aquí y para KeyRemap4MacBook ver aquí ). En Linux usando el programa xcape .
fuente
Ctrl
tecla (en la posición normal) sin torcer el dedo meñique: puede presionarlo con la palma externa de la mano, como se describe bien aquí (encontré este buen truco inteligente en la 'Red, hora de darle volver :) y felicitaciones a quien lo inventó)Ctrl
aAlt
(Cmd
) y viceversa, entonces<C-[>
realmente brilla. Pinky es débil, el pulgar es fuerte. En QWERTY ni siquiera necesita dejar la fila de casa para eso, en Dvorak no es tan bueno, pero aceptable.Las asignaciones que uso son:
De esta manera, puedes simplemente golpear jy kal mismo tiempo, sin tener que preocuparte por cuál presionas primero.
fuente
<C-[>
y<C-c>
son dos alternativas nativas a<Esc>
.Ver
:help i_<esc>
y:help i_ctrl-c
que explica la diferencia entre<C-c>
y<Esc>
.fuente
<C-[>
tiene una simetría agradable (ambos dedos pequeños se mueven en direcciones opuestas).<C-c>
no es exactamente lo mismo que<Esc>
.<C-c>
puede romper sutilmente los complementos y autocmds.Puede asignar Caps Locka Control sin utilizar ningún programa externo :
setxkbmap -option caps:ctrl_modifier
Esto lleva Controla la fila de inicio, lo que hace que sea más fácil presionar todos los trazos modificados de Control, incluidos Ctrl-[y Ctrl-Cque salen del modo Insertar en Vim.
Alternativamente, en la parte inferior de su respuesta, Giovanni sugiere mapear Caps Lockpara realizar ambos Control y Escape dependiendo de la longitud de la prensa, pero esto requiere la instalación de un software adicional.
fuente
Sugeriría usar mi plugin vim-easyescape .
El problema con una secuencia de mapa simple
inoremap jj <ESC>
es que Vim hará una pausa cada vez que escriba jo ken modo de inserción (está esperando la siguiente tecla para determinar si se aplicará el mapeo). La pausa causa una distracción visual que puede notar o no. vim-easyescape no tiene ese problema y admite tiempos de espera personalizados.fuente
En la terminal vi y Vim, alt+
single-normal-mode-key
funcionará para ediciones rápidas en la mayoría de las terminales.Esto funciona porque la mayoría de las terminales envían el modificador alt como el carácter de escape. Por ejemplo, cuando escribe alt+kel emulador de terminal envía dos caracteres al programa en ejecución:
esc
,k
. Vi y Vim interpretan esto como era de esperar; deja el modo de inserción (debido a la fuga) y ejecuta el comando de modo normal (en el ejemplo, mueve el cursor una línea hacia arriba).Esta puede ser una forma conveniente de salir del modo de inserción si su teclado tiene la tecla alt al lado de la barra espaciadora (para que pueda presionarse con el pulgar, dejando los dedos en la fila de inicio), siempre que esté utilizando un emulador de terminal con este comportamiento y no me importa ejecutar un comando en modo normal.
fuente
single-normal-mode-key
? ¿Te refieres a Escape?FWIW yo uso:
Se siente similar a golpear Volver. También lo uso
;
como líder para otras asignaciones de modo Insertar.La única vez que he necesitado escribir ';' + letra es cuando el código de golf; No he tenido ningún conflicto de otra manera.
fuente
He estado usando Ctrl+ 3desde hace bastante tiempo, me resulta más fácil escribir que la mayoría de las alternativas y parece funcionar bien (al menos en Linux). My Caps Lockestá asignado a Ctrl, por lo que es muy cómodo escribirlo.
Intenté usar Ctrl+ cdurante algún tiempo, pero tuve algunos problemas con él que no recuerdo exactamente ahora, pero no estaba obteniendo exactamente el mismo comportamiento que Esc, como ahora tengo con Ctrl+ 3.
fuente
Esc
en Vanilla Vim. Lo encontré empíricamente probando combinaciones, no sé detalles sobre cómo funcionan las partes internas.Si tiene un teclado de inglés de EE. UU., Presionar Ctrl- [es equivalente a presionar Esc. Esto proporciona una manera fácil de salir del modo de inserción. Alternativamente, use Ctrl- c.
Si tiene vim en modo fácil (
-y
), debe presionar Ctrl- l(Control-L) para salir del modo de inserción.También hay Ctrl+ o, que será único modo de inserción salida temporal sólo para ejecutar un comando y volver al modo de inserción (ver:
:help i_CTRL-O
)O Ctrl+ r, pero es sólo para insertar contenido del registro o expresión, por ejemplo, Ctrl+ r, =5*5(ver:
:help i_CTRL-R
,:help c_CTRL-R
y después stackoverflow ).Lea más en: Evite la tecla de escape en vim wikia
fuente
Ctrl+r
es para insertar registros (incluida la expresión=
reg). Si desea ejecutar temporalmente un comando de uso únicoCtrl+o
.Me he conformado
<A-e>
con el escape:Editar: Acabo de encontrar
<C-\><C\n>
qué te envía al modo normal desde cualquier otro modo. También tiene un mejor comportamiento general. Las asignaciones se convierten en:fuente
Vuelvo a asignar la pestaña para salir. Creo que históricamente es donde solía estar la clave esc, así que la usé y nunca miré hacia atrás. Casi nunca necesito poner una pestaña en un documento, y cuando lo hago solo presiono shift + tab. Nunca me perdí el enlace de la pestaña original.
fuente