Que fait la motion de soulignement dans vim?

10

Je ne comprends pas la motion de soulignement dans vim, du moins dans le contexte de yank (y). Ma feuille de triche lit

"soft" bol down

que je ne comprends pas. Si j'utilise le mouvement seul, il semble être le même que celui ^qui signifie aller au premier espace non blanc de la ligne. Cependant, si j'utilise le mouvement, yil tire sur toute la ligne (comme yy ou Y), mais y^ne tire pas sur toute la ligne, mais uniquement sur le premier caractère non blanc, exclusif, comme vous pouvez vous y attendre.

Alors, qu'est-ce que le soulignement est censé faire exactement?

Tyler Durden
la source

Réponses:

13

Sans décompte, ^et _sont en effet équivalents, mais ce dernier prend en charge un décompte:

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

Le linewiseexplique votre deuxième observation: lorsqu'il est utilisé comme un mouvement, il couvre non seulement le texte entre la position précédente et la nouvelle, mais l'ensemble des lignes couvertes.

La lecture attentive du :helpfournit ces informations. Vous verrez également (par proximité), que la _commande est étroitement liée à +et -.

Ingo Karkat
la source
Hmmm, ok, alors quelle est la différence entre y2_ et y2 +?
Tyler Durden
2
@TylerDurden La différence est de 1 (ligne), tout comme la différence entre [count] - 1et [count]pour toute valeur de [count]. Comme Ingo l'a mentionné, cela vous ferait du bien de lire l'aide intégrée de vim qui est assez claire.
jw013
3
Pourquoi la _commande existe-t-elle +? Pourquoi quelqu'un la préfère-t-elle ?
Aaron Thoma
Pour ne pas discuter, mais l'aide est un peu déroutante sur celui-ci. [count] - 1 lines downward- pour moi, il se lisait "compte: 1 lignes vers le bas" au lieu de l'interprétation correcte. Je sais, cela n'a même pas beaucoup de sens, mais il y a un peu de confusion là-dedans.
André Chalella