Przy refaktoryzacji kodu przydatna byłaby możliwość zamiany argumentów funkcji.
Zmiana np .:
func(foo[0], bar(), baz.spam)
w
func(baz.spam, foo[0], bar())
Czy istnieje jakiś sposób zamiany argumentów w lewo / w prawo, utrzymując nawiasy funkcyjne i przecinki na miejscu?
Zauważ, że może to być dość zaangażowane, jeśli chcesz uwzględnić argumenty, które same są wywołaniami funkcji, z własnymi argumentami - np .: func(baz->spam, foo[0], bar(a, b, c))
- obsługa tych przypadków prawdopodobnie wymagałaby bardziej kompleksowej analizy.
cia
„zmienić argument”. ❤️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)
Kroki:
dW
usuń bieżące słowo (argument)W
przejdź do pierwszego znaku następnego argumentuP
wklej przed kursoremZamień dwa ostatnie argumenty
Kroki:
dt,
usuń do następnego przecinkaE
przejdź do ostatniego znaku następnego argumentuP
wklej przed kursoremZamień dowolne dwa argumenty
Kroki:
vt,d
wizualnie usuwaj do przecinkaW
kilka razy, aż dojdziesz do argumentu, który chcesz zamienićgP
wklej przed kursorem i umieść kursor na znaku po wklejonej zawartościdt,
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 kursoremEdycja: jak wskazał @ aharris88, OP chce, aby ostatni argument był pierwszy, a wszystkie pozostałe przesunąć w prawo.
Obróć argumenty w prawo
Kroki:
dw
usunąć,␣
dt)
usuń ostatni argument%p
przejdź do nawiasów otwierających i wklej ostatni argumenta,␣
wstaw przecinek i spację<Esc>
powrócić do trybu normalnegoLub, 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ść rejestrur
Bonus: GIF w każdym przypadku: swap1 , swap2 , swap3 i obracanie
źródło