Lors de la refactorisation de code, il serait utile de pouvoir échanger des arguments de fonction.
Changer par exemple:
func(foo[0], bar(), baz.spam)
dans
func(baz.spam, foo[0], bar())
Existe-t-il un moyen de permuter les arguments vers la gauche / droite, en gardant les parenthèses et les virgules de fonction en place?
Remarque, cela pourrait devenir très compliqué si vous voulez prendre en compte les arguments qui sont eux-mêmes des appels de fonction avec leurs propres arguments - par exemple: func(baz->spam, foo[0], bar(a, b, c))
- la prise en charge de ces cas impliquerait probablement une analyse plus complète.
cia
"changer d'argument". ❤️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)
Pas:
dW
supprimer le mot actuel (argument)W
aller au premier caractère de l'argument suivantP
coller devant le curseurÉchangez les deux derniers arguments
Pas:
dt,
supprimer jusqu'à la prochaine virguleE
aller au dernier caractère de l'argument suivantP
coller devant le curseurÉchangez deux arguments
Pas:
vt,d
supprimer visuellement jusqu'à la virguleW
plusieurs fois jusqu'à ce que vous atteigniez l'argument avec lequel vous souhaitez échangergP
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 curseurEdit: 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
Pas:
dw
supprimer,␣
dt)
supprimer le dernier argument%p
passer aux parenthèses ouvrantes et coller le dernier argumenta,␣
insérer une virgule et un espace<Esc>
revenir en mode normalOu, 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 registrer
Bonus: un GIF pour chaque cas: swap1 , swap2 , swap3 et rotation
la source