online metrologia mac for vim

metrologia - vim online



Posicionamiento del cursor al ingresar al modo insertar (6)

Cuando cambio al modo de comando en Vim, el cursor parece mover un carácter hacia atrás cuando está al final o sobre una palabra, y cuando voy al final de la línea con $ , no va al final real de línea pero un carácter antes del final de la última palabra, y l ("el") no lo mueve hacia adelante y tengo que usar la tecla de flecha para llegar allí.

No he podido encontrar la documentación de este comportamiento, pero esto me parece extraño. ¿Cuál es el razonamiento detrás de esto (por mi propia curiosidad), y cómo puedo evitarlo (o lidiar con él)?


Depende de la implementación si el cursor puede moverse más allá del final de la línea (al menos es una opción en el modo de emulación VIM de mi editor). Puede presionar a para ingresar al modo insertar y comenzar a editar después del carácter actual en esta situación (en lugar de i ).


Esto se debe a que todos los comandos que utiliza afectan a la letra del cursor. Si no tiene sentido presionar x (borrar 1 letra) detrás de la letra real.

En realidad, no es necesario mover el cursor en el modo de comando detrás de la última letra. Si desea, por ejemplo, agregar, puede presionar a, que coloca el cursor detrás de la letra en el modo de inserción.


No estoy seguro del razonamiento detrás de esto, pero puedes evitarlo presionando:

Shift + a


Puede que le interese la opción virtualedit y el siguiente valor:

set virtualedit=onemore

Con esta opción, puede mover el cursor un carácter sobre el final de la línea y luego presionar i para insertar el modo después del último carácter.

Esto resuelve el problema de una manera pero personalmente encuentro este comportamiento un poco extraño. Solo en unos pocos casos se encuentra con el problema, por lo que podría valer la pena ignorarlo ;-)


es un poco más claro si usa gvim, donde cambia el cursor.

El modo de inserción en gvim tiene el cursor como una I-beam, ya que la siguiente letra que escriba se insertará después de |. el modo normal tiene el cursor de bloque, porque lo siguiente que escribe puede afectar la letra que está resaltada actualmente (como si usa x, s, etc.). Entonces el modo de inserción en realidad está agregando texto, pero el modo normal está modificando el texto de alguna manera.

Entonces, en el modo normal, saltar al final de la línea realmente significa el último personaje, ya que es lo último que se puede modificar. en el modo insertar, el cursor pasa el último carácter, ya que es posible agregar cosas después.

Una cosa a tener en cuenta es que puedes controlar de qué lado del bloque terminas yendo del modo normal al modo insertar



Digamos que tienes t [h] es texto

([] significa que el cursor del bloque está sobre esa h)



Digamos que tienes t | su texto

si presionó i en este punto, el cursor se vería así (en gvim) (| es el cursor del modo de inserción)



Digamos que tienes th | es texto

si presionas a en lugar de i, se vería así



Otra cosa a tener en cuenta (como se menciona en pavanlimo), desde el modo normal puede ir al modo insertar con el cursor justo antes del primer carácter de la línea, o justo después del último carácter, con shift-I o shift-A.


yo sugiero

:set virtualedit=onemore :inoremap <Esc> <Esc>`^