Isso é algo que me incomoda há muito tempo, mas nunca cheguei a perguntar. Digamos que o texto em seu buffer fique assim:
Hello
World
Se eu colocar meu cursor em algum lugar na linha 2, e o fizer yk, meu cursor terminará na linha 1. Isso parece implicar um operador e um movimento também move o cursor. No entanto, se eu iniciar na linha 1 e yjcontinuar, meu cursor permanecerá no mesmo local. A mesma inconsistência acontece com muitas chaves.
Moves Doesn't move
gg G
h l
{ }
( )
T t
F f
? /
Então, o que há com esse comportamento? Isso é esperado e bem documentado? Existe um nome para isso? Pode ser substituído?
Em geral, parece que "o movimento para trás, o para a frente não", mas existe uma maneira de saber se um operador + movimento moverá o cursor ou não?
cursor-motions
DJMcMayhem
fonte
fonte
y
é um operador, não um comando.Respostas:
A partir de
:h operator
O que está acontecendo é que o cursor está sendo movido para o início do objeto de texto. A ativação do modo visual tornará mais aparente. Você pode pensar nisso como o texto está sendo selecionado antes de ser operado. Use
vby
para ver o que eu quero dizer.fonte