65 votes

Comment coller dans la ligne où se trouve le curseur ?

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 ?

53voto

Randy Morris Points 16975

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.

25voto

El Modifier dans gvim énumère les éléments suivants :

  • Coller = "+gP

  • Mis avant = [p

  • Mettre après = ]p

Si vous exécutez vim sous Windows, vous pouvez procéder comme suit pour obtenir Ctrl + C y Ctrl + V pour fonctionner comme prévu :

source $VIMRUNTIME/mswin.vim
behave mswin

11voto

romainl Points 55506

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

    1. "_dd supprime toute la ligne courante dans le "registre des trous noirs", la ligne suivante est maintenant la ligne courante.

    2. P place le contenu du registre non nommé au-dessus de la ligne courante.

  • Vp

    1. V vous met dans LIGNE VISUELLE et sélectionne visuellement toute la ligne courante.

    2. p remplace la sélection par le contenu du registre non nommé

  • S<C-r>"

    1. S supprime le contenu de la ligne en cours et vous place en INSERT mode

    2. <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 y P 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 faites V"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 .

6voto

kenorb Points 2464

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

3voto

vvv Points 11

Vous pouvez utiliser D pour effacer depuis la position actuelle du curseur jusqu'à la fin de la ligne, et p pour la nouvelle position du curseur.

C'est-à-dire que pour couper et coller une ligne entière, utilisez ^D et p.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X