Esta expresión regular lo hará por sus ejemplos:
:s/\vcall ("[^"]+"|[^,]+)\s*,\s*("[^"]+"|[^,]+)/call \2, \1/
Esta expresión regular tendrá que ser progresivamente más desagradable si ha escapado comillas y tales cosas en uno de sus parámetros.
En realidad, solo resaltaría un parámetro (en modo visual), marque d
, resalte el otro parámetro y presione p
; Vim pegará muy bien lo que está en el registro, sobrescribirá lo que ha resaltado y cambiará el texto eliminado en el registro. A continuación, mueva el cursor y presione p
nuevamente. Resalte, d
, resalte, p
, mueva el cursor, p
es una combinación común, en mi vimming al menos.
Así que con el cursor al inicio de la línea, primer ejemplo:
wva"dlvawpF,P
Significado movimiento más allá de la palabra "llamada" (w
), resalte una cadena entre comillas (va"
), borrarlo (d
) , mueva un espacio hacia la derecha (l
), resalte una palabra (vaw
), pegue (p
), retroceda hasta la coma (F,
), pegue antes (P
).
Segundo ejemplo:
wva"dlva"p_f,P
Esto no es difícil una vez que se acostumbre a los comandos de movimiento.
¿está solo separado por comas? y solo una coma en cada línea? – nightingale2k1
los parámetros están siempre separados por comas, pero las pramas de cadena pueden tener comas en línea a veces. –
:% s: call \ (". *" \), \ (. * \): Call \ 2, \ 1: g – nightingale2k1