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 ^, je +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 vou Vum pouco antes do movimento. Então, imagino d^ser equivalente a v^de imagino d_ser equivalente a V_dou 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 Vwdque é 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, 3ddexclua 3 linhas inteiras etc.
ddpode 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_.