La commande p se colle sous le curseur et P se colle au-dessus du curseur. Quelle est la commande pour coller dans la ligne où se trouve le curseur ?
Réponses
Trop de publicités?Tout dépend du type de données du registre que vous collez. S'il s'agit de données orientées ligne (arrachées avec la fonction yy par exemple), elles seront collées comme une ligne entière au-dessus ou au-dessous du curseur. Si les données sont orientées vers les caractères (arrachées avec par ex. y2w ), il sera collé à la position du curseur ou avant dans la ligne en cours.
Ver :help linewise-register
pour plus d'informations sur l'interaction entre le type de registre et la commande put.
Si vous voulez garder la ligne actuelle telle quelle, vous collez soit au-dessus, soit au-dessous de la ligne.
Si vous voulez écraser la ligne actuelle, vous devez d'abord la supprimer, ce qui signifie que la ligne suivante prend sa place, puis coller au-dessus de la nouvelle ligne courante.
Il y a plus d'une façon de le faire :
-
"_ddP
-
"_dd
supprime toute la ligne courante dans le "registre des trous noirs", la ligne suivante est maintenant la ligne courante. -
P
place le contenu du registre non nommé au-dessus de la ligne courante.
-
-
Vp
-
V
vous met dans LIGNE VISUELLE et sélectionne visuellement toute la ligne courante. -
p
remplace la sélection par le contenu du registre non nommé
-
-
S<C-r>"
-
S
supprime le contenu de la ligne en cours et vous place en INSERT mode -
<C-r>"
met le contenu du registre sans nom
-
Les deux dernières options ont un effet secondaire intéressant : le contenu de la ligne précédente est placé dans le registre sans nom, ce qui rend impossible les collages multiples avec le même contenu.
Heureusement, vous pouvez contourner cette situation :
-
Le "registre du trou noir", mentionné dans la première solution, fonctionne, eh bien comme un trou noir. Tout ce que vous y mettez disparaît à jamais pour que vous puissiez continuer à utiliser
p
yP
avec un certain degré de confiance que le registre sans nom est toujours le même de collage en collage. -
Vim vous donne accès à 26 registres alphabétiques que vous pouvez utiliser pour enregistrer des macros ou coller des trucs à répétition.
En prenant la deuxième solution comme point de départ, on commence par mettre toute une ligne en registre
"a
con"ayy
alors vous faitesV"ap
sur une autre ligne.
Mais tout ce qui précède suppose que le texte que vous voulez coller est une ligne réelle. Vim fait la différence entre "ligne par ligne" et "caractère par caractère" : il ne vous laissera pas coller une ligne dans un contexte de caractère par caractère ou l'inverse.
Tirer une ligne entière avec yy
garde son sens de la ligne ou du caractère et vous ne serez pas en mesure de p
entre deux caractères sur une même ligne. Pour cela, vous devez vous assurer que ce que vous arrachez ne sera pas interprété comme une ligne par Vim. Par exemple, supposons que vous soyez sur le premier caractère de la première ligne et que vous vouliez arracher ipsum dolor
et le mettre à sa place normale entre lorem
y sit
:
ipsum dolor
lorem sit amet
Vous devez taper "ayee
pour mettre votre texte arraché en registre "a
placez le curseur à l'endroit voulu et tapez "aP
.
Pour coller en mode insertion, il suffit d'appuyer sur Control + R . Puis saisissez le registre, par exemple Shift + + .
Pour coller en mode commande, vous appuyez sur P mais vous devez vous assurer que votre ligne n'a pas de caractère de nouvelle ligne (par exemple, arraché par 0v$hy
), sinon il apparaîtra au-dessus du curseur.
De même pour le mode visuel, voir : Comment coller une ligne dans un bloc de sélection vertical ? à Vim SE
- Réponses précédentes
- Plus de réponses