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:
- Inicio en modo insertar
- 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?
Lo mejor que puede hacer es volver a asignar la acción a una clave diferente (consulte Cómo reasignar <Ctrl-Home> para ir a la primera línea del archivo? Para obtener ideas)
Pensaría en la frecuencia con la que uso esta "característica" y la asigno a una pulsación de teclado de forma acorde
Puede asignar las claves a esto:
inoremap II <Esc>I
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