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:
"rdw
usuń ,␣
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