Je présente 3 méthodes. Les deux premiers sont des cas particuliers, qui nécessitent moins de frappes. Le dernier est générique.
|
représente la position du curseur.
Permuter les arguments adjacents (ne fonctionne pas pour les deux derniers)
function func(foo[0], |bar(), baz.spam, qux->norf)
Pas:
dW
supprimer le mot actuel (argument)
W
aller au premier caractère de l'argument suivant
P
coller devant le curseur
Échangez les deux derniers arguments
function func(foo[0], bar()|, baz.spam, qux->norf)
Pas:
dt,
supprimer jusqu'à la prochaine virgule
E
aller au dernier caractère de l'argument suivant
P
coller devant le curseur
Échangez deux arguments
function func(|foo[0], bar(), baz.spam, qux->norf)
Pas:
vt,d
supprimer visuellement jusqu'à la virgule
W
plusieurs fois jusqu'à ce que vous atteigniez l'argument avec lequel vous souhaitez échanger
gP
coller avant le curseur et placer le curseur sur le caractère après le contenu collé
dt,
supprimer jusqu'à la prochaine virgule. remplacer ,
par )
si c'est le dernier argument
`<
revenir au début de la dernière zone visuelle (le curseur sera placé à la virgule)
P
coller devant le curseur
Edit: comme indiqué par @ aharris88, l'OP veut que le dernier argument soit le premier et déplace tous les autres à droite.
Faire pivoter les arguments vers la droite
function func(foo[0], bar(), baz.spam|, qux->norf)
Pas:
dw
supprimer ,␣
dt)
supprimer le dernier argument
%p
passer aux parenthèses ouvrantes et coller le dernier argument
a,␣
insérer une virgule et un espace
<Esc>
revenir en mode normal
Ou, si vous ne voulez jamais quitter le mode normal:
"rdw
supprimer ,␣
dans un registrer
dt)
supprimer le dernier argument
%p
passer aux parenthèses ouvrantes et coller le dernier argument
"rp
coller le contenu du registre r
Bonus: un GIF pour chaque cas:
swap1 , swap2 , swap3 et rotation