O que o movimento sublinhado faz no vim?

10

Não entendo o movimento sublinhado no vim, pelo menos no contexto de yank (y). Minha cábula lê

"soft" bol down

que eu não compreendo. Se eu usar o movimento sozinho, parece ser o mesmo, o ^que significa ir para o primeiro espaço não em branco da linha. No entanto, se eu usar o movimento y, ele puxa a linha inteira (como yy ou Y), mas y^não puxa a linha inteira, mas apenas para o primeiro caractere que não seja um espaço em branco, exclusivo, como seria de esperar.

Então, o que exatamente o sublinhado deve fazer?

Tyler Durden
fonte

Respostas:

13

Sem contagem, ^e _são de fato equivalentes, mas o último suporta uma contagem:

  _  <underscore>         [count] - 1 lines downward, on the first non-blank
                          character |linewise|.

O linewiseexplica sua segunda observação: quando usado como um movimento, não apenas cobre o texto entre a posição anterior e o novo, mas todo o conjunto de linhas cobertas.

A leitura cuidadosa do :helpfornece essas idéias. Você também verá (por proximidade) que o _comando está intimamente relacionado a +e -.

Ingo Karkat
fonte
Hmmm, ok, então qual é a diferença entre y2_ e y2 +?
Tyler Durden
2
@TylerDurden A diferença é 1 (linha), assim como a diferença entre [count] - 1e [count]para qualquer valor de [count]. Como Ingo mencionou, seria bom ler a ajuda interna do vim, o que é bastante claro.
Jw013
3
Por que o _comando existe - por que alguém prefere +?
Aaron Thoma
Para não discutir, mas a ajuda é um pouco confusa. [count] - 1 lines downward- para mim, dizia "contagem: 1 linhas para baixo" em vez da interpretação correta. Eu sei, nem faz muito sentido, mas há um pequeno espaço para confusão lá.
André Chalella 11/07/19