Vi presento 3 metodi. I primi due sono casi particolari, che richiedono meno tasti. L'ultimo è generico.
|
rappresenta la posizione del cursore.
Scambia argomenti adiacenti (non funziona per gli ultimi due)
function func(foo[0], |bar(), baz.spam, qux->norf)
passi:
dW
elimina la parola corrente (argomento)
W
vai al primo carattere del prossimo argomento
P
incolla prima del cursore
Scambia gli ultimi due argomenti
function func(foo[0], bar()|, baz.spam, qux->norf)
passi:
dt,
elimina fino alla virgola successiva
E
vai all'ultimo carattere del prossimo argomento
P
incolla prima del cursore
Scambia due argomenti qualsiasi
function func(|foo[0], bar(), baz.spam, qux->norf)
passi:
vt,d
elimina visivamente fino alla virgola
W
più volte fino a raggiungere l'argomento con cui si desidera scambiare
gP
incolla prima del cursore e posiziona il cursore sul carattere dopo il contenuto incollato
dt,
elimina fino alla virgola successiva. sostituire ,
con )
se questo è l'ultimo argomento
`<
tornare all'inizio dell'ultima area visiva (il cursore verrà posizionato sulla virgola)
P
incolla prima del cursore
Modifica: come sottolineato da @ aharris88, l'OP vuole che l'ultimo argomento sia il primo e sposta tutti gli altri a destra.
Ruota gli argomenti a destra
function func(foo[0], bar(), baz.spam|, qux->norf)
passi:
dw
Elimina ,␣
dt)
elimina l'ultimo argomento
%p
passa all'apertura delle parentesi e incolla l'ultimo argomento
a,␣
inserire una virgola e uno spazio
<Esc>
tornare alla modalità normale
Oppure, se non vuoi mai uscire dalla modalità normale:
"rdw
cancellare ,␣
in un registror
dt)
elimina l'ultimo argomento
%p
passa all'apertura delle parentesi e incolla l'ultimo argomento
"rp
incolla il contenuto del registro r
Bonus: una GIF per ogni caso:
swap1 , swap2 , swap3 e rotazione