Ce regex fera pour vos exemples:
:s/\vcall ("[^"]+"|[^,]+)\s*,\s*("[^"]+"|[^,]+)/call \2, \1/
Cette regex devra devenir progressivement plus méchant si vous avez échappé à des guillemets et des choses dans l'un de vos paramètres.
En réalité, je voudrais juste mettre en surbrillance un paramètre (en mode visuel), appuyez sur d
, mettez en surbrillance l'autre paramètre, et appuyez sur p
; Vim va bien coller ce qui est dans le registre, en écrasant ce que vous avez mis en surbrillance, et échanger le texte supprimé dans le registre. Puis déplacez le curseur et appuyez à nouveau sur p
. Mettez en surbrillance, d
, mettre en évidence, p
, déplacer le curseur, p
est une combinaison commune, dans mon écrémage au moins.
Donc, avec le curseur au début de la ligne, premier exemple:
wva"dlvawpF,P
Signification Dépasser le mot « appel » (w
), mettez en surbrillance une chaîne entre guillemets (va"
), supprimer (d
) , déplacez un espace vers la droite (l
), mettez un mot en surbrillance (vaw
), collez (p
), déplacez-le vers la virgule (F,
), collez-le avant (P
).
Deuxième exemple:
wva"dlva"p_f,P
Ce n'est pas difficile une fois que vous vous habituer aux commandes de mouvement.
est-il séparé par des virgules seulement? et seulement une virgule à chaque ligne? – nightingale2k1
les paramètres sont toujours séparés par des virgules, mais les chaînes de caractères peuvent parfois contenir des virgules. –
:% s: appel \ (". *" \), \ (. * \): Appel \ 2, \ 1: g – nightingale2k1