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 .