Por que o comando sublinhado _ é útil?

15

Estou um pouco confuso sobre o motivo pelo qual o comando sublinhado _, que salta para o início da (COUNT - 1) linha abaixo do cursor, obtém sua própria chave. Quando eu usaria isso em vez de +ou ^?

Toothrot
fonte

Respostas:

16

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.

DJMcMayhem
fonte
11
Tudo bem, mas eu realmente o usaria? ddé mais fácil que d_e 3yjé mais fácil que 4y_.
Toothrot
5
@toothrot Se você estava criando seu próprio operador e desejava operar nas próximas n linhas.
DJMcMayhem
5
@ Toothrot Acho que quero esclarecer isso um pouco. Na edição diária do vim, não, na verdade não é particularmente útil. Eu quase nunca o usei também. A razão pela qual é útil é porque é a definição de muitos comandos úteis. ddpode ser mais conveniente do que d_, mas isso ddé apenas um mapeamento para d_. E também é útil no vimscript.
DJMcMayhem
9
Algumas ações que agem em uma "moção" podem não ter outros atalhos. Algo como "gU_" colocará em maiúsculas tudo na linha atual, mesmo que o cursor não esteja no início da linha.
BMB
11
@bmb Sobre o quê gUU? Eu acho que valeria a pena encontrar um exemplo real de onde <operator>_seria usado.
Hotschke 15/05/19