Questa espressione regolare lo farà per i vostri esempi:
:s/\vcall ("[^"]+"|[^,]+)\s*,\s*("[^"]+"|[^,]+)/call \2, \1/
Questa espressione regolare avrà bisogno di diventare progressivamente più brutto se si è sfuggito virgolette e cose del genere in uno dei vostri parametri.
In realtà, vorrei evidenziare un parametro (in modalità visiva), premere d
, evidenziare l'altro parametro e premere p
; Vim inciderà bene ciò che è nel registro, sovrascrivendo ciò che hai evidenziato e scambiando il testo cancellato nel registro. Quindi sposta il cursore e premi di nuovo p
. Evidenziare, d
, evidenziare, p
, spostare il cursore, p
è una combinazione comune, almeno nel mio vimming.
Così, con il cursore all'inizio della linea, primo esempio:
wva"dlvawpF,P
Significato sposta oltre la parola "chiamata" (w
), evidenziare una stringa tra virgolette (va"
), eliminarla (d
) , spostare uno spazio a destra (l
), evidenziare una parola (vaw
), incollare (p
), spostarsi indietro nella virgola (F,
), incollarlo prima di esso (P
).
Secondo esempio:
wva"dlva"p_f,P
Questo non è difficile una volta che ci si abitua ai comandi di movimento.
fonte
2009-08-13 06:36:44
è separato solo da virgole? e solo una virgola su ogni linea? – nightingale2k1
i parametri sono sempre separati da virgola, ma a volte i prami di stringa possono avere virgole in linea. –
:% s: chiamata \ (". *" \), \ (. * \): Chiamata \ 2, \ 1: g – nightingale2k1