Vim – comment augmenter chaque nombre dans le bloc visuel?

J'ai le SQL suivant:

update am.PERMISSIONS set PRM_ORDER = 35 PRM_VISIBLE = b'1' where PRM_ID = 3; update am.PERMISSIONS set PRM_ORDER = [35] PRM_VISIBLE = b'1' where PRM_ID = 7; update am.PERMISSIONS set PRM_ORDER = [40] PRM_VISIBLE = b'1' where PRM_ID = 10; update am.PERMISSIONS set PRM_ORDER = [45] PRM_VISIBLE = b'1' where PRM_ID = 11; ... 

avec des crochets, je sélectionne le bloc visuel, où je veux augmenter chaque nombre de 5. Comment faire?

Mettez en évidence visuellement le text entre parenthèses:

Ctr + V 2jl

Incrémentez chaque nombre par cinq:

:norm 5 Ctr + V Ctr + A Explication:

:norm exécute toute la command en mode normal. Le Ctr + V est nécessaire, sinon le slider returnnerait au début de la ligne. Ctr + A augmente un nombre de 1, ce qui est fait 5 fois. La scope visuelle est insérée automatiquement après avoir appuyé sur les deux points.

EDIT: Comme Stephane l'a souligné correctement, le code précédent incrémente le premier nombre trouvé sur n'importe quelle ligne. Voici une meilleure solution:

 %s/\[\zs\d\+\ze\]/\=(submatch(0)+5) 

Il ajoute cinq à tous les entiers entre parenthèses. Les \zs et \ze sont utilisés pour exclure les parenthèses de la correspondance et submatch renvoie le numéro apparié.

Nous n'avons pas besoin de quitter le mode visuel pour augmenter les nombres, il suffit d'utiliser g

 5 g Ctrl-a 5 ......... 5 times g ......... globally Ctrl-a .... increase numbers 

En fait, j'ai appris cette astuce dans un défi Vingolf .