Представляю 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 та обертання