¿Por qué "Operador" + "Movimiento" se comporta de manera inconsistente?


17

Esto es algo que me ha molestado durante mucho tiempo, pero nunca he podido preguntar. Digamos que el texto en su búfer se ve así:

Hello
World

Si coloco mi cursor en algún lugar de la línea 2 y lo hago yk, mi cursor terminará en la línea 1. Esto parece implicar que un operador más un movimiento también mueve el cursor. Sin embargo, si empiezo en la línea 1 y lo hago yj, mi cursor permanece en el mismo lugar. La misma inconsistencia ocurre con muchas teclas.

Moves   Doesn't move
gg      G
h       l
{       }
(       )
T       t
F       f
?       /

Entonces, ¿qué pasa con este comportamiento? ¿Es esto esperado y bien documentado? ¿Hay un nombre para esto? ¿Se puede anular?

En general, parece que "se mueve hacia atrás, hacia adelante no", pero ¿hay alguna manera de saber definitivamente si un operador + movimiento moverá el cursor o no?


2
yes un operador, no un comando.
romainl

Respuestas:


16

Desde :h operator

Después de aplicar el operador, el cursor se deja principalmente al comienzo del texto sobre el que se operó. Por ejemplo, "yfe" no mueve el cursor, pero "yFe" mueve el cursor hacia la izquierda a la "e" donde comenzó el tirón.

Lo que sucede es que el cursor se mueve al comienzo del objeto de texto. Habilitar el modo visual lo hará más evidente. Puede considerarlo como el texto que se está seleccionando antes de que se opere. Use vbypara ver a qué me refiero.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.