11
votes

Besoin de dupliquer du texte dans chaque ligne et d'ajouter un signe égal et un préfixe à celui-ci

Ceci est mon texte:

xxx = C.xxx
yyy = C.yyy
zzz = C.zzz

vim

0 commentaires

3 Réponses :


1
votes

Sélectionnez le texte, puis appuyez sur : et tapez xxx


0 commentaires

8
votes

Tapez ceci:

:%s/\(.*\)/\1 = c.\1/g
  • % code> - Travailler sur toutes les lignes LI>
  • \ (. * \) code> - Capturez tous les caractères d'un groupe ("Groupe 1") LI>
  • s / motif / remplacement / g code> - faire une substitution de chaîne li>
  • \ 1 code> dans le motif de remplacement - reportez-vous au groupe correspondé li> ul> p>


3 commentaires

Vous n'avez pas besoin de ^ ou $ .


Selon si le contenu à dupliquer ou non est effectivement au début de la ligne, il peut être utile de traiter \ s * \ zs juste après le premier / donc que les principaux espaces sont préservés.


Cela m'aide à obtenir mon remplacement.



26
votes

Vous pouvez également utiliser la forme plus simple:

:%s/.*/& = C.&


3 commentaires

Impressionnant. Légère solution: :% s /.*/& = c. & / . Il suffit d'ajouter la fermeture / .


@mpettis pas besoin du tout si vous n'avez pas de drapeaux :-d c'est sûrement plus complet, mais je suis laissé de côté ici pour la brièveté


J'ai besoin de quelque chose comme ça pour plusieurs lignes: % string% dans string =% string%