Respostas:
Boa pergunta!
Como um movimento por si só, você está certo, _
não é uma chave particularmente útil.:h _
*_*
_ <underscore> [count] - 1 lines downward, on the first non-blank
character |linewise|.
A palavra-chave aqui é "linewise". Portanto, se seu objetivo é apenas mover o cursor e, em seguida ^
, j
e +
tudo fazer o trabalho, e não há muito ponto para _
. Mas, como argumento para um operador, _
é super poderoso.
Muitos atalhos de tecla dupla são na verdade apenas atalhos para _
. Por exemplo,
dd -> d_
cc -> c_
yy -> y_
Y -> y_
etc. Por ser um movimento de linha, basicamente seleciona toda a linha a ser operada, independentemente de onde seu cursor começa, enquanto ^
apenas passa do seu personagem para o primeiro que não estiver em branco.
Ajuda-me a pensar em movimentos linha a linha versus bloco a imaginar que estou pressionando um v
ou V
um pouco antes do movimento. Então, imagino d^
ser equivalente a v^d
e imagino d_
ser equivalente a V_d
ou V^d
. Obviamente, você também pode substituir um movimento para forçá-lo a ser linear ou a caráter. Então dv_
na verdade é exatamente o mesmo que d^
ou v^d
, e dVw
é como Vwd
que é exatamente como d_
.
O motivo é especificamente a linha "contagem 1ª", para que 1dd
(o que é realmente d1_
) exclua uma linha inteira, 2dd
(o que é realmente d2_
) exclua 2 linhas inteiras, 3dd
exclua 3 linhas inteiras etc.
dd
pode ser mais conveniente do que d_
, mas isso dd
é apenas um mapeamento para d_
. E também é útil no vimscript.
gUU
? Eu acho que valeria a pena encontrar um exemplo real de onde <operator>_
seria usado.
dd
é mais fácil qued_
e3yj
é mais fácil que4y_
.