Très souvent, je me trouve dans le besoin d'effectuer une substitution qui aura des correspondances éparses sur un grand fichier et avec des expressions de recherche et de remplacement non triviales.
Par exemple, disons que j'ai des appels de fonction comme okFunction(arg1, arg2 arg3)
. Les arguments différeront avec chaque appel de fonction, bien sûr. Disons maintenant que j'ai découvert une meilleure fonction qui n'a pas besoin arg2
. Je peux facilement ajuster tout le fichier avec
:%s/\<okFunction(\(\w\+\), \(\w\+\), \(\w\+\))/betterFunction(\1, \3)/gc
Bien que conceptuellement simple, je ne suis pas sûr d'avoir la bonne syntaxe dans ce modèle assez long. Le c
drapeau aide vraiment ici, mais le problème est que lors de la demande de confirmation, vim ne montrera pas avec quoi le match sera remplacé. Je veux dire, cela montrera l'expression de remplacement, mais pas le résultat évalué. Si je confirme la substitution avec y
, vim passera immédiatement au match suivant et je ne serai pas en mesure de voir si j'ai fait des erreurs.
J'ai trouvé le plugin vim-over qui résout partiellement le problème, mais uniquement si tous les mathes sont visibles à l'écran lorsque vous tapez la commande. Une fois que vous appuyez sur Entrée, le comportement est exactement le même que celui décrit ci-dessus et je n'ai pas d'aperçu.
Alors, existe-t-il un moyen pour que vim évalue l'expression de remplacement lors de la demande de confirmation sur les commandes de substitution?
%
, vérifiez que le résultat correspond à ce que j'attendais, puis utilisez la substitution avec %
(ce n'est que quelques touches:) :<up><c-b>%
. De toute évidence, une option d'aperçu serait beaucoup plus efficace que cela. Bien qu'aucun correctif ne soit disponible, on pourrait peut-être envelopper la substitution dans une fonction vimscript avec ce type d'option mais cela semble beaucoup de travail ...