Je suis un peu perplexe quant à la raison pour laquelle la commande de soulignement _
, qui saute au début de la (COUNT - 1) ème ligne sous le curseur, obtient sa propre clé. Quand devrais-je l'utiliser plutôt que +
ou ^
?
la source
Je suis un peu perplexe quant à la raison pour laquelle la commande de soulignement _
, qui saute au début de la (COUNT - 1) ème ligne sous le curseur, obtient sa propre clé. Quand devrais-je l'utiliser plutôt que +
ou ^
?
Bonne question!
Comme une motion en soi, vous avez raison, _
n'est pas une clé particulièrement utile.:h _
*_*
_ <underscore> [count] - 1 lines downward, on the first non-blank
character |linewise|.
Le mot clé ici est "linewise". Donc, si votre objectif est de simplement déplacer le curseur, alors ^
, j
et +
tout le travail est fait, et cela ne sert à rien _
. Mais comme argument pour un opérateur, il _
est super puissant.
De nombreux raccourcis à double touche ne sont en fait que des raccourcis pour _
. Par exemple,
dd -> d_
cc -> c_
yy -> y_
Y -> y_
etc. Parce que c'est un mouvement en ligne, il sélectionne essentiellement la ligne entière à opérer, quel que soit le point de départ de votre curseur, alors ^
qu'il passe simplement de votre personnage au premier non vide.
Cela m'aide lorsque je pense aux mouvements en ligne par rapport aux mouvements en bloc d'imaginer que j'appuie sur l'un v
ou sur l'autre V
juste avant le mouvement. J'imagine d^
donc être équivalent à v^d
et j'imagine d_
être équivalent à V_d
ou V^d
. Bien sûr, vous pouvez également remplacer un mouvement pour le forcer à être linéaire ou à caractère. Donc, dv_
c'est exactement la même chose que d^
ou v^d
, et dVw
c'est comme Vwd
ce qui est exactement comme d_
.
La raison pour laquelle il s'agit spécifiquement de la ligne "count-1th" est que 1dd
(ce qui est vraiment d1_
) supprime une ligne entière, 2dd
(ce qui est vraiment d2_
) supprime 2 lignes entières, 3dd
supprime 3 lignes entières, etc.
dd
est plus facile qued_
et3yj
est plus facile que4y_
.dd
pourrait être plus pratique qued_
, mais c'est parce quedd
c'est juste un mappage versd_
. Et c'est aussi utile dans vimscript.gUU
? Je pense qu'il serait utile de trouver un exemple réel où<operator>_
serait utilisé.