web-dev-qa-db-fra.com

Coller plusieurs fois

Quelle est la meilleure façon de remplacer plusieurs lignes par le contenu du presse-papiers?

Le problème que j'ai, c'est quand je tire une ligne et que je la colle sur une autre ligne, le "coup sec" est remplacé par la ligne que je viens de remplacer. Maintenant, si je veux remplacer une autre ligne par la même ligne, je dois remonter et la tirer à nouveau.

Il doit y avoir une meilleure façon de le faire.

79
jwerre

J'ai ceci dans mon .vimrc:

xnoremap p pgvy

(remarque: cela ne fonctionnera qu'avec le registre par défaut, mais ce mappage est facile à retenir). Il serait possible d'écrire une version plus élaborée. En outre, vous pouvez toujours utiliser P pour obtenir l'ancien comportement.

98
Benoit

"0 devrait contenir le contenu de votre coup sec. C'est un peu plus fastidieux à taper, mais "0p devrait faire ce que vous voulez.

Alternativement, ne sélectionnez pas et ne remplacez pas les anciennes lignes à l'avant. Si vous trouvez ces lignes avec une recherche, appuyez simplement sur n. encore et encore (après un p) initial, puis quand ils sont tous collés, faites ndd suivi par autant n.s si nécessaire.

Le plus gros changement mental que j'ai dû faire lors du passage à Vim est de comprendre comment appliquer les modifications de groupe de manière séquentielle. C'est à dire. plutôt que de faire un groupe de modifications sur une ligne, puis de faire un groupe des mêmes modifications sur une autre ligne, je ferai la première modification sur un groupe de lignes (en utilisant . avec beaucoup d'effet), puis le deuxième montage sur un tas de lignes, etc. Alternativement, l'utilisation de macros peut être utile car elles sont fantastiques, mais parfois un peu plus fastidieuses pour fonctionner correctement avec des changements "complexes".

25
dash-tom-bang

J'utilise souvent un autre registre, copiez la ligne dont vous avez besoin dans un registre nommé "ay puis collez à partir de là "ap

12
Facundo Casco

Lorsque vous collez une sélection dans Vim, elle remplacera le registre par défaut par le contenu de la sélection. Si le collage sur une sélection efface le contenu du registre du presse-papiers, il est fort probable que vous ayez la ligne suivante dans votre .vimrc

set clipboard=unnamed

Une option consiste à supprimer cela et à utiliser le registre de presse-papiers explicite "+

Une autre option consiste à utiliser l'un des autres registres nommés explicitement (a-z). Après le premier collage, tirez la ligne dans "c par exemple, puis utilisez "cp pour coller à partir de là.

11
JaredPar

utilisez npn est le nombre de fois que vous voulez coller les lignes, par exemple 3p va coller 3 lignes.

8
toopay

Au lieu d'utiliser le copier/coller, il est souvent préférable d'utiliser une commande d'objet texte telle que ciw pour changer le mot intérieur. Cette méthode a l'avantage d'être facilement reproductible en utilisant le . répéter la commande.

  1. yiw Yank mot intérieur (copiez le mot sous le curseur, dites "premier").
  2. ... Déplacez le curseur sur un autre mot (dites "deuxième").
  3. ciw<C-r>0 Changer "second", en le remplaçant par "premier" (est Ctrl-R).
  4. ... Déplacez le curseur sur un autre mot (dites "troisième").
  5. . Modifiez "troisième", en le remplaçant par "premier".
5
jack guan