Pourquoi p a-t-il collé une ligne copiée après la ligne actuelle, plutôt qu'après le mot actuel?

12

Supposons que j'ai les quatre lignes suivantes:

line1
line2
line3
line4

Maintenant, si je vais line1et fais un yyqui copie la ligne, puis vais commencer line3et faire un collage en utilisant 'p', j'obtiendrais

...
line3
line1
line4
....

Pourquoi at-il collé line1après line3dans une nouvelle ligne?

Mon initiale était cependant parce que le caractère de nouvelle ligne $ était attaché à la ligne 3 et que lorsque j'ai appuyé sur pvim, il était considéré line3$comme un seul mot, il a donc été collé après line3$. Cependant, il semble que ma compréhension était fausse. Parce que si je fais ça line3 $et que je fais un pau début de la ligne, j'obtiens le même résultat.

Pourquoi pcrée-t-on une nouvelle ligne et colle-t-elle une nouvelle ligne après line3?

James Franco
la source

Réponses:

21

Lorsque vous avez supprimé la ligne en utilisant dd, vous avez effectué une linewise supprimer.

La pcommande colle après la position du curseur. Étant donné que le registre par défaut a été rempli avec du contenu ligne par ligne, cela signifie qu'il sera collé après la ligne sur laquelle se trouve le curseur.

Si au lieu de cela vous aviez supprimé le contenu de la ligne (par exemple 0D), le registre aurait été par caractère et donc collé après le caractère sur lequel se trouvait le curseur.

En général, le comportement doit suivre ce que l'on attend d'une suppression / copie et d'un collage. Cependant, il est possible de modifier le -wiseness d'un registre en utilisant getreg () / setreg () .

Soyez prudent, cependant. Compte tenu de votre exemple initial, le simple fait de changer le registre pour qu'il soit par caractère ne supprime pas la nouvelle ligne qui faisait partie de la suppression. Cela change juste la façon dont la pâte se produit.


Pour des recommandations sur le scénario spécifique de suppression d'une ligne entière mais de la coller par caractère, consultez cet article .

jamessan
la source