Comment substituer sur plusieurs lignes?

10

Je voudrais insérer un mot sur plusieurs lignes, y a-t-il une commande comme

:[2,3,5,7,11]s/^/word\ /g

qui insérerait wordau début des lignes 2, 3, 5, 7 et 11?

Ici, plusieurs lignes ne sont pas contiguës.

user3813057
la source

Réponses:

16

Effectuer une substitution sur plusieurs lignes consécutives est assez simple:

:2,11s/^/word /

mais une plage ne peut pas couvrir des lignes non consécutives.

Cependant, avec un peu de créativité, il est tout à fait possible de contourner cette "limitation".

En effet, vous pouvez répéter la dernière substitution avec :&ou :&&(la première ne conservera pas les drapeaux d'origine, la seconde le fera) afin de pouvoir enchaîner assez facilement les substitutions:

2s/^/word /|3&|5&|7&|11&

Voir :help :&et faire défiler pour :&&.

romainl
la source