Par exemple, disons que je veux mettre un nombre avant chaque ligne qui commence par le mot "Do". La commande ressemblerait à quelque chose :%s/^(Do )/1. \1/
, mais que puis-je faire pour qu'elle applique les numéros consécutivement au lieu du même numéro à chaque fois?
Notez que je suis bien conscient des nombreuses façons de le faire en utilisant des macros et Ctrl-A, mais pour une utilisation dans des commandes en mode Ex plus compliquées, je voudrais connaître la réponse à la question de titre exactement.
Pour un autre exemple où une approche macro ne serait pas si facile, disons que je veux ajouter un nombre à toutes les instances du mot "Section", et les faire numéroter consécutivement mais en redémarrant le décompte après chaque ligne qui commence "Chapitre". Une commande en mode Ex qui peut presque faire cela, sauf pour incrémenter réellement le nombre à ajouter, est:
:g/^Chapter/;/^Chapter/-s/Section\zs/ 1/g
Vous pouvez voir qu'une méthode simple pour incrémenter des nombres dans la commande de substitution en mode Ex pourrait être très utile.
la source
\=i.
est une expression non valide..
devient un opérateur concaténé dans l'\=
expression. Ainsis//\=i . '. '/
sera ajouté'. '
Check out:help expression-syntax
.