Finalmente decidí abandonar las teclas de flecha para la navegación a favor de hjkl
. Vim hardmode
Usé el complemento para deshabilitar las teclas de flecha.
Me acostumbré a la navegación bastante rápido, pero resulta que la navegación en modo de inserción de repente es imposible.
Hay alguna solución para esto ? (el modo de inserción existente no es una solución).
insert-mode
navigation
stdcall
fuente
fuente
Respuestas:
Hay muchas opciones que tienes. Una opción, y la OMI, la más sensata y fácil es dejar de deshabilitar las teclas de flecha. Entiendo por qué muchos vimmers hardcore dicen cosas como
(Obviamente estoy bromeando) Sin embargo, hay un propósito para las teclas de flecha. Son extremadamente útiles para navegar:
En modo de inserción
En la linea de comando
En general, cuando las personas le dicen que no use las teclas de flecha, es porque quieren que vuelva a aprender la navegación de una manera más parecida a la de Vim. Si te sientes cómodo
hjkl
y usas principalmente las teclas de flecha en el modo de inserción, no hay una buena razón para obligarte a no usarlas.La opción # 2 es reasignar
ctrl-hjkl
para actuar como teclas de cursor. Esto es bueno porque puedes quedarte en casa y encaja bien con la memoria muscular que ya has aprendido usandohjkl
en modo normal. De hecho, esto es lo que hago . El principal inconveniente de este enfoque es que puede ser un problema configurarlo en terminal vim porque<C-j>
produce unNUL
byte. Lo soluciono usando Gvim. No sé si hay una solución fácil para la consola vim o no.La opción # 3 es usar
<C-o>
para hacer pequeños movimientos en modo normal. Por ejemplo, si estás escribiendoy se da cuenta que ha olvidado una coma, en lugar de hacerlo leftleftleftleftleftleft, usted podría simplemente hacer
<C-o>b<C-o>h
o<C-o>2Fo
, o cualquier otra combinación de movimientos de modo normal como usted.Por supuesto, otra opción, y una que me gusta mucho es usar Esc, hacer algunos pequeños movimientos antes de volver al modo normal. Usted mencionó que preferiría no hacerlo, pero a veces esta es realmente la forma más eficiente.
Probablemente también haya otros enfoques, pero estos son los que me gustan que me han funcionado.
fuente
<c-o>gk
y en<c-o>gj
lugar de<Up>
y<Down>
. ¿Porqué es eso?gk
ygj
visualmente subir y bajar una línea, incluso si la línea está envuelta.noremap <Up> <NOP>
...) . Pasas suficiente tiempo en modo normal para aprender HJKL, pero están ahí cuando lo necesitas. O al menos, considero que este es un punto medio cómodo entre dejarlos siempre apagados o siempre encendidos, y no requiere reasignar otras teclas (mucha gente como Ctrl-HJKL para moverse entre paneles).Me gusta usar la tecla Control para convertir las
hjkl
teclas de movimiento en teclas de movimiento "universales". Aquí está la parte relevante de mi.vimrc
:Las
inoremap
declaraciones se aplican al modo de inserción, mientras que lascnoremap
que se aplican al modo de comando. (He estado usando este mapeo durante tanto tiempo que he olvidado si hay alguna forma de navegar por el historial del modo de comando sin él).(Editar: veo que la otra respuesta ya ha mencionado esta posibilidad. Aún así, puede ser útil ver los comandos de mapeo reales).
fuente
Presiona y escluego usa hjkly wWbBy cualquier otra navegación que quieras hacer. El objetivo del modo difícil es conseguir que aprendas a navegar con movimientos vim más complejos. Haga pequeñas ediciones y luego muévase a una nueva ubicación, usando el modo normal.
Si no quieres aprender a navegar más rápido con el modo hard habilitado, mira mi respuesta de otra pregunta sobre el mismo tema.
fuente
Si desea mover más de UNA o DOS posiciones ...
... la mejor opción es golpear
ESC
, moverse y volver al modo de inserción nuevamente.No tiene sentido crear mapeos como
<C-h>
moverse hacia la izquierda y luego comenzar a golpearlo demasiadas veces ... como usuario de vim no se supone que debe presionar la misma tecla varias veces para lograr un movimiento inteligente.(Si la
ESC
tecla no está cerca de tus dedos, sería una buena opción crear una asignación para ella).Si desea mover UNA o DOS posiciones en el modo de inserción ...
... una buena opción sería definir algunos movimientos usando su
<Leader>
clave:(Lo uso
,
como<Leader>
clave ya que se siente cerca y cómodo para mis dedos)fuente
Si solo necesita modificar una pequeña cantidad de texto o una palabra, puede usar
<Ctrl-O>h/j/k/l
.<Ctrl-O>
lo lleva de vuelta al modo Normal solo para ese comando y luego lo regresa al modo de inserción, por lo que le ahorra una cantidad de pulsaciones de teclas, si necesita pasar al modo normal para un pequeño movimiento.Ref: 1. http://vim.wikia.com/wiki/Use_Ctrl-O_instead_of_Esc_in_insert_mode_mappings
fuente