Представляю 3 методи. Перші два - це окремі випадки, для яких потрібно менше натискань клавіш. Останній - родовий.
|являє позицію курсору.
Поміняйте суміжні аргументи (не працює останні два)
function func(foo[0], |bar(), baz.spam, qux->norf)
Кроки:
dW видалити поточне слово (аргумент)
W перейдіть до першого символу наступного аргументу
P вставити перед курсором
Поміняйте останні два аргументи
function func(foo[0], bar()|, baz.spam, qux->norf)
Кроки:
dt, видалити до наступної коми
E перейти до останнього символу наступного аргументу
P вставити перед курсором
Обміняйте будь-якими двома аргументами
function func(|foo[0], bar(), baz.spam, qux->norf)
Кроки:
vt,d візуально видалити до коми
W кілька разів, поки ви не дійдете до аргументу, з яким потрібно обмінятися
gP вставити перед курсором і розмістити курсор на графіку після вставленого вмісту
dt,видалити до наступної коми. замінити ,на, )якщо це останній аргумент
`< повернутися до початку початку останньої зорової області (курсор буде розміщений у комах)
P вставити перед курсором
Редагувати: як вказує @ aharris88, ОП хоче, щоб останній аргумент був першим, а всі інші рухалися правильно.
Обертайте аргументи праворуч
function func(foo[0], bar(), baz.spam|, qux->norf)
Кроки:
dw видалити ,␣
dt) видалити останній аргумент
%p перейти до відкриття дужок і вставити останній аргумент
a,␣ вставити кому та пробіл
<Esc> повернення в звичайний режим
Або якщо ви не хочете ніколи залишати звичайний режим:
"rdwвидалити ,␣в реєстрr
dt) видалити останній аргумент
%p перейти до відкриття дужок і вставити останній аргумент
"rp вставити вміст регістра r
Бонус: GIF для кожного випадку:
swap1 , swap2 , swap3 та обертання