tutorial siguiente realiza qué ing función editar comandos comando borrar archivo1 archivo vim

vim - siguiente - vi ir al final del archivo



Mover al comienzo de la línea mientras está en el modo Insertar (8)

Sé que puedo usar cualquiera de los siguientes:

  1. Inicio en modo insertar
  2. Esc + i para salir del modo insertar e ingresarlo de nuevo, yendo efectivamente al principio de la línea.

Pero ninguno me satisface. En el primer caso, tengo que inclinar la cabeza para golpear a Home , porque no puedo golpearlo a ciegas. En el segundo caso, mi brazo izquierdo debe salir de la fila de inicio para presionar Esc , lo que también es molesto.

¿Alguna idea?




Puede ingresar el modo de inserción usando I (capital i).

Pondrá el cursor al comienzo de la línea.

De manera similar, puede usar A para agregar algo al final de la línea.

Sin embargo, realmente no resuelve el problema de moverse mientras ya está en modo Insertar.

Acabo de revisar la ayuda en el modo Insertar, no hay una combinación de teclas en el modo de inserción para mover al comienzo de la línea.

Otra idea: reasignar un nuevo comando solo en modo insertar

inoremap <Ci> <Home>


Si está utilizando el terminal MacOS, vaya a Preferencias ...> Configuraciones> Teclado y asigne la tecla Finalizar a Ctrl-O $ (se muestra como / 017 $) y luego use fn + izquierda para simular la tecla Finalizar. Haga lo mismo con la tecla de inicio. Secuencia de escape / 033 [H también funciona para el hogar.


Tengo Ctrl + a y Ctrl + e mapeados al principio y al final de la línea, respectivamente. Esto coincide con el comportamiento de la mayoría de las líneas de comando bash. Funciona bien para mi

inoremap <C-e> <Esc>A inoremap <C-a> <Esc>I


Un atajo que me ha funcionado (memoria muscular e intuición) es asignar __ (que es un doble _ ) para "insertar al inicio de la línea actual".

Razón fundamental:

  • _ ya va al inicio de la línea
  • en vim, doblar cualquier cosa es una forma muy común de hacerlo "a esta línea"
  • double _ no entra en conflicto con ningún movimiento (ya estás al principio de la línea)
  • su mano ya está en el lugar correcto si fue al comienzo de la línea y ahora quiere insertarla.

vimscript:

"insert at start of current line by typing in __ (two underscores) function DoubleUnderscore() if v:count == 0 && getcurpos()[2] == 1 :silent call feedkeys(''I'', ''n'') else :silent call feedkeys(''^'', v:count + ''n'') endif endfunction nnoremap <silent> _ :call DoubleUnderscore()<CR>

Es complicado porque el nnoremap __ _I alternativo fácil nnoremap __ _I hace que vim se demore al presionar _ para distinguir entre _ y __ .


Ctrl + O mientras está en el modo Insertar lo pone en modo comando solo para presionar una tecla. Por lo tanto, Ctrl + O y Shift + I deberían lograr lo que estás buscando.


ctrl+o then 0 | | letter number