Przedstawiam 3 metody. Pierwsze dwa są szczególnymi przypadkami, które wymagają mniejszej liczby naciśnięć klawiszy. Ostatni jest ogólny.
|reprezentuje pozycję kursora.
Zamień sąsiednie argumenty (nie działa dla dwóch ostatnich)
function func(foo[0], |bar(), baz.spam, qux->norf)
Kroki:
dW usuń bieżące słowo (argument)
W przejdź do pierwszego znaku następnego argumentu
P wklej przed kursorem
Zamień dwa ostatnie argumenty
function func(foo[0], bar()|, baz.spam, qux->norf)
Kroki:
dt, usuń do następnego przecinka
E przejdź do ostatniego znaku następnego argumentu
P wklej przed kursorem
Zamień dowolne dwa argumenty
function func(|foo[0], bar(), baz.spam, qux->norf)
Kroki:
vt,d wizualnie usuwaj do przecinka
W kilka razy, aż dojdziesz do argumentu, który chcesz zamienić
gP wklej przed kursorem i umieść kursor na znaku po wklejonej zawartości
dt,usuń do następnego przecinka. zastąp ,przez, )jeśli jest to ostatni argument
`< wróć do początku ostatniego obszaru wizualnego (kursor zostanie umieszczony w przecinku)
P wklej przed kursorem
Edycja: jak wskazał @ aharris88, OP chce, aby ostatni argument był pierwszy, a wszystkie pozostałe przesunąć w prawo.
Obróć argumenty w prawo
function func(foo[0], bar(), baz.spam|, qux->norf)
Kroki:
dw usunąć ,␣
dt) usuń ostatni argument
%p przejdź do nawiasów otwierających i wklej ostatni argument
a,␣ wstaw przecinek i spację
<Esc> powrócić do trybu normalnego
Lub, jeśli nie chcesz nigdy wychodzić z trybu normalnego:
"rdwusuń ,␣do rejestrur
dt) usuń ostatni argument
%p przejdź do nawiasów otwierających i wklej ostatni argument
"rp wklej zawartość rejestru r
Bonus: GIF w każdym przypadku:
swap1 , swap2 , swap3 i obracanie