Ich präsentiere 3 Methoden. Die ersten beiden sind Sonderfälle, für die weniger Tastenanschläge erforderlich sind. Der letzte ist generisch.
|
repräsentiert die Cursorposition.
Benachbarte Argumente tauschen (funktioniert nicht für die letzten beiden)
function func(foo[0], |bar(), baz.spam, qux->norf)
Schritte:
dW
Löscht das aktuelle Wort (Argument)
W
gehe zum ersten Zeichen des nächsten Arguments
P
Einfügen vor dem Cursor
Tauschen Sie die letzten beiden Argumente aus
function func(foo[0], bar()|, baz.spam, qux->norf)
Schritte:
dt,
lösche bis zum nächsten Komma
E
Gehe zum letzten Zeichen des nächsten Arguments
P
Einfügen vor dem Cursor
Tauschen Sie zwei beliebige Argumente aus
function func(|foo[0], bar(), baz.spam, qux->norf)
Schritte:
vt,d
visuell bis Komma löschen
W
mehrmals, bis Sie das Argument erreichen, mit dem Sie tauschen möchten
gP
Einfügen vor dem Cursor und Platzieren des Cursors auf dem Zeichen nach dem Einfügen des Inhalts
dt,
lösche bis zum nächsten Komma. Ersetzen Sie ,
durch, )
wenn dies das letzte Argument ist
`<
gehe zurück zum Anfang des letzten sichtbaren Bereichs (der Cursor wird auf das Komma gesetzt)
P
Einfügen vor dem Cursor
Edit: Wie von @ aharris88 gezeigt, möchte das OP, dass das letzte Argument das erste ist und alle anderen nach rechts bewegt.
Argumente nach rechts drehen
function func(foo[0], bar(), baz.spam|, qux->norf)
Schritte:
dw
löschen ,␣
dt)
letztes Argument löschen
%p
Springe zu den öffnenden Klammern und füge das letzte Argument ein
a,␣
füge ein Komma und ein Leerzeichen ein
<Esc>
kehren Sie in den normalen Modus zurück
Oder, wenn Sie den normalen Modus niemals verlassen möchten:
"rdw
,␣
in ein Register löschenr
dt)
letztes Argument löschen
%p
Springe zu den öffnenden Klammern und füge das letzte Argument ein
"rp
Inhalt des Registers einfügen r
Bonus: ein GIF für jeden Fall:
Swap1 , Swap2 , Swap3 und drehen