Mientras está en modo Insertar en Vim, ¿hay alguna forma de atravesar el texto moviendo algunos caracteres hacia adelante y hacia atrás que no sea usar las teclas de flecha?
Si presiono h, j, ky lmientras que en el modo de inserción, los personajes reales se imprimen en la pantalla en lugar de moverse a través del texto.
La forma en que lo estoy haciendo en este momento es tener que recurrir a Ctrl+ [( Esc) y atravesar el texto; pero obviamente eso no es productivo.
imap jk <Esc>
) para que no tenga que romper su impulso y alcanzar su teclado para presionar la tecla.<ESC>
) mapeado enkj
lugar dejk
; ¡Mi amigo Dijkstra tiene la culpa!jk
ykj
, así que solo lo presiono como un gran botón con dos dedos y no importa el orden en el que vuelvo a la normalidad.Respuestas:
Parece que usas mal vim, pero es probable que sea por no estar muy familiarizado con él.
La forma correcta es presionar Esc, ir a donde desea hacer una pequeña corrección, arreglarla, regresar y seguir editando. Es efectivo porque Vim tiene muchos más movimientos que el personaje habitual hacia adelante / atrás / arriba / abajo. Después de que aprenda más de ellos, esto será más productivo.
Aquí hay un par de casos de uso:
Pero, si aún desea hacer pequeños recorridos de texto sin salir del modo de inserción, siga los consejos de rson y use + . Tomando el primer ejemplo que mencioné anteriormente, + lo moverá a un carácter "f" anterior y lo dejará en modo de inserción.CtrlOCtrlOFf
fuente
Ctrl+o
para emitir un solo comando en modo normal. Esto a veces puede llevarte a donde quieres estar, especialmente cuando se combina con los comandos de movimiento t / T yf / F.:h ins-special-keys
.ctrl-h
: retroceso,:ctrl-w
eliminar palabra,:ctrl-u
eliminar al comienzo de la líneaalt-b
,: retroceder una palabra.Mientras está en modo de inserción , use CtrlOpara ir al modo normal con solo un comando:
que es probablemente la forma más sencilla de hacer lo que quieres y es fácil de recordar.
Otras teclas de control muy útiles en modo de inserción:
Esto eliminará muchos interruptores innecesarios para volver al modo normal.
fuente
Modo de inserción
Movimiento
hjkl
A pesar de lo que dijo Pavel Shved , que probablemente sea más aconsejable acostumbrarse al Escmodo Insertar, aquí hay un conjunto de ejemplos de asignaciones para una navegación rápida dentro del modo Insertar:
Esto hará que Alt+ hen el modo Insertar quede un carácter a la izquierda, Alt+ jhacia abajo y así sucesivamente, de manera análoga al hjklmodo Normal.
Debe copiar ese código en su archivo vimrc para que se cargue cada vez que inicie vim (puede abrirlo escribiendo
:new $myvimrc
comenzando en modo Normal).Cualquier movimiento en modo normal
Como la Alttecla modificadora no está asignada (a algo importante) de forma predeterminada, puede extraer de la misma manera otra (o toda) funcionalidad del modo Normal al modo Insertar. Por ejemplo:
pasar al comienzo de la palabra actual con Alt+ b:
(Otros usos de Alten modo Insertar)
Vale la pena mencionar que puede haber mejores usos para la Altclave que replicar el comportamiento en modo Normal: por ejemplo, aquí hay asignaciones para copiar desde una línea adyacente la parte de la columna actual hasta el final de la línea:
(Utilicé la
\
continuación de línea y la sangría para aumentar la claridad: los comandos se interpretan como si estuvieran escritos en una sola línea).Teclas de acceso rápido incorporadas para editar
(No hay teclas de acceso rápido incorporadas notables para el movimiento en modo Insertar).
Referencia:
:help insert-index
Modo de línea de comandos
Este conjunto de asignaciones hace que los movimientosAlt + superiores estén disponibles en la línea de comandos:hjkl
Alternativamente, estas asignaciones agregan los movimientos tanto al modo Insertar como al modo de línea de comandos de una vez:
Los comandos de mapeo para pasar los comandos del modo Normal al modo de línea de comandos se ven un poco diferentes de los comandos de mapeo del modo Insertar (porque el modo de línea de comandos carece del modo Insertar Ctrl+ O):
Teclas de acceso rápido incorporadas para movimiento y edición
Referencia:
:help ex-edit-index
fuente
Alt
llave?Si eres un purista vim, omite leer esta respuesta. OTOH, si eres nuevo en vim y estás buscando algunos consejos útiles que no encontrarás en los cientos de tutoriales y blogs de vim, sigue leyendo ... :-)
Algunas formas no ortodoxas (vim)
Es 2014, y como alguien que ha vuelto recientemente
vim
, puedo ofrecer algunos puntos de vista y consejos potencialmente contrarios.Use shift + left o shift + right para atravesar palabras
Si bien la repetición es un concepto poderoso en vim, (personalmente) me resulta extraño que su uso me obligue a contar (líneas, caracteres, palabras, etc.) o adivinar. Mi cerebro generalmente funciona como "Quiero el cursor allí " y no como "Quiero el cursor _5_palabras_a_la_izquierda_". Poder mover rápidamente el cursor y observar visualmente dónde está el punto de inserción de esta manera me permite mantener mi mente en lo que estoy editando en lugar de tener que contar cuántos saltos necesito hacer para llegar a donde necesito editar.
Active el modo de mouse, use la rueda del mouse y haga clic
... para navegar por grandes cuerpos de texto.
La mayoría (todas) de las computadoras modernas tienen un panel táctil que está estrechamente integrado con el teclado (por ejemplo, MacBooks). Los diseñadores industriales han pasado muchos años optimizando estos diseños para que el viejo problema de tener que alejar la mano del teclado ya no sea un problema real. De acuerdo, es si estás acostumbrado a un mouse y no te gusta cambiar, pero para alguien nuevo en vim (como los que pueden encontrar esta publicación a través de una búsqueda), esto no debería ser un gran problema.
Como beneficio adicional, hacer clic + arrastrar lo pone en modo visual
Con el mouse habilitado, hacer clic y arrastrar tiene el efecto de cambiar al modo visual y marcar una región para tirar.
Y usa la rueda de desplazamiento
Usar el mouse (rueda) para desplazarse y hacer clic para colocar el cursor (duh) simplemente funciona. Consulte http://usevim.com/2012/05/16/mouse/ para obtener más información al respecto.
Y entonces...
Estas son las formas más modernas de navegar en vim (usando el mouse, la rueda de desplazamiento, etc.), igualmente efectivas dependiendo de su preferencia de entrada.
HTH
fuente
Muchas personas en la comunidad Vim argumentan que no debe navegar en modo Insertar, que no es la forma Vim. Creo que este es un sentimiento incorrecto aprendido al pasar de los editores estándar a Vim.
Vim es más poderoso cuando utiliza sus herramientas para crear acciones o hallazgos atómicos y repetibles.
Está bien navegar mientras está en modo Insertar si está reparando un error que cometió en la misma sesión Insertar. No debe navegar fuera del rango de texto que modificó.
Si comete un error al ingresar texto y sale del modo Insertar para corregirlo, no podrá repetir la acción deseada,
.
repetirá la corrección.Vim admite muchas teclas de navegación en modo Insertar. Obviamente, están las teclas de flecha, Inicio y Fin, pero también hay muchos otros atajos. Ver
:h ins-special-keys
.fuente
En GVim, puedes usar el mouse. Pero, sinceramente, ¿qué hay de malo en usar las teclas de flecha? Hay una razón por la que están en un teclado.
fuente
Para tener una navegación un poco mejor en modo de inserción, ¿por qué no asignar algunas teclas?
Si puede evitar que la tecla Meta funcione en su terminal, puede burlarse del modo emacs aún mejor. La navegación en modo normal es mucho mejor, pero para movimientos más cortos ayuda a permanecer en modo de inserción.
Para saltos más largos, prefiero la siguiente traducción predeterminada:
Esto cambia al modo normal y retrocede una palabra
fuente
Creo Homey End(y PageUp/ PageDn) también funciona con normalidad, mientras que en el modo de inserción, pero aparte de eso, no creo que hay otras teclas estándar definidos para el recorrido de texto.
fuente
Lo siento, pero vim no funciona de esa manera.
Debe cambiar al modo "normal", navegar y luego volver a insertarlo nuevamente.
fuente
Puede crear asignaciones que funcionen en modo de inserción. La forma de hacerlo es a través de inoremap. Tenga en cuenta la 'i' al comienzo del comando (noremap es útil para evitar colisiones de mapas clave). El corolario es 'n' para el modo 'normal'. Puedes suponer lo que vim piensa que es 'normal';)
SIN EMBARGO, realmente desea navegar en texto usando el modo 'normal'. Vim es súper en este tipo de cosas y toda esa potencia está disponible desde el modo normal. Vim ya proporciona formas fáciles de pasar del modo normal al modo de inserción (por ejemplo, i, I, a, A, o, O). El truco es facilitar el acceso al modo normal. La forma de hacerlo es reasignar el escape a una clave más conveniente. Pero necesita uno que no entre en conflicto con su escritura habitual. Yo suelo:
Dado que jj (eso es 2 j's escritos uno tras otro rápidamente) no parece aparecer en mi vocabulario. Otros se reasignarán a donde sea cómodo.
El otro cambio esencial que hago es cambiar las teclas CAPSLOCK y CONTROL en mi teclado (usando la configuración del teclado de la computadora host) ya que casi nunca uso CAPSLOCK y tiene ese botón grande y hermoso justo donde lo quiero. (Esto es común para los usuarios de Emacs. ¡La desventaja es cuando te encuentras en un teclado 'sin fijar'! ¡Aaarggh!)
Una vez que reasigna CAPSLOCK, puede utilizar cómodamente las siguientes reasignaciones de modo de inserción:
Teniendo en cuenta que algunas teclas ya están asignadas en modo de inserción (backwards-kill-word es Cw (Control-w) por defecto, es posible que ya tenga los enlaces que desea. Dicho esto, prefiero Ch, así que en mi .vimrc tengo :
PERO, probablemente quieras el mismo espasmo de memoria muscular en modo normal, así que también mapeo Ch como:
(d) elete (b) ackwards logra lo mismo con el mismo acorde clave. Este tipo de edición rápida es una que encuentro útil en la práctica para los errores tipográficos. Pero manténgase en el modo normal para moverse en el texto y cualquier otra cosa más que matar la palabra anterior. Una vez que tenga el hábito de cambiar los modos (usando una reasignación, por supuesto), será mucho más eficiente que reasignar el modo de inserción.
fuente
Puede usar
imap
para asignar cualquier tecla en modo de inserción a una de las teclas del cursor. Al igual que:Ahora h funciona como en modo normal, moviendo el cursor. (Mapear h de esta manera es obviamente una mala elección)
Habiendo dicho eso, no creo que la forma estándar de moverse en el texto usando VIM "no sea productiva". Hay muchas formas muy poderosas de recorrer el texto en modo normal (como usar w y b, o / y?, O f y F, etc.)
fuente
Para algunos movimientos y acciones de uso frecuente, he definido las siguientes asignaciones. Esto ahorra una combinación de teclas en comparación con la combinación CTRL + O y, dado que las necesito con frecuencia, merecen la pena a largo plazo.
fuente