Y a-t-il une raison historique spécifique à cela?
Contexte - (vous pouvez ignorer cette partie si vous comprenez déjà la question.)
Comme intermédiaire / avancé vi
utilisateurs savent, y
est la commande il Yanks « Yank » (copies) le texte spécifié par la commande de mouvement suivant. Ainsi ye
yanks à la fin du mot, y0
yanks de la position du curseur au début de la ligne, y_
tire sur toute la ligne actuelle, y$
tire de la position du curseur à la fin de la ligne actuelle, etc.
La d
commande (supprimer) et la commande c
(modifier) peuvent également être utilisées avec toutes ces requêtes.
dd
est synonyme d_
et supprime l'intégralité de la ligne actuelle. De même, cc
est synonyme de c_
et changera la ligne actuelle (c'est-à-dire qu'il supprimera tout le texte et vous mettra en mode insertion au début de la ligne). **
La commande "yank" suit cette convention; yy
tirera la ligne actuelle entière comme y_
.
Il existe un autre ensemble de synonymes: D
est un synonyme de d$
et sera supprimé de la position du curseur jusqu'à la fin de la ligne. C
est synonyme de c$
et changera le texte de la position du curseur à la fin de la ligne, vous plaçant en mode insertion pour taper le nouveau texte.
Cependant, Y
est un autre synonyme de yy
ou y_
et tirera sur toute la ligne , pas seulement du curseur jusqu'à la fin de la ligne, comme vous pouvez vous y attendre des modèles C
et D
.
Je comprends que dans Vim, il a été conservé de cette façon pour préserver la compatibilité descendante avec vi
, comme cela est mentionné dans l'aide de Vim sous :help Y
:
Si vous aimez que "Y" fonctionne du curseur à la fin de la ligne (ce qui est plus logique, mais pas compatible avec Vi), utilisez ": map Y y $".
Il s'agit donc d'un reliquat de vi
. Bien.
Mais pourquoi le commandement a-t-il été conçu de cette façon en premier lieu? Y avait-il jamais une logique?
* Plus précisément, il place le texte dans le registre 0 et pointe le registre sans nom sur le registre 0.
** Bien que cela ne soit pas pertinent pour ma question, S
est un autre synonyme de cc
ou c_
.