Il peut souvent être très pratique d'effectuer une opération sur plusieurs fichiers (par exemple, renommer une méthode si vous êtes développeur, ou changer un host si vous êtes inutile administrateur système). Il est naturellement possible d'effectuer cette tâche dans vim, au moyen des commandes arg*
Comme exemple nous prendrons le search-and-replace sur plusieurs fichiers.
La première chose à faire est de remplir la liste des fichiers sur lesquels nous souhaitons travailler, ce qui se fait au moyen de la commande args
:args **/*.scala
Cette commande ajoute (récursivement) tous les fichiers avant l'extension .scala à la liste des fichier à traiter (les chemins relatifs se font par rapport au répertoire donné par la commande :pwd)
Maintenant, il est possible d'effectuer une action sur tous les fichiers de la liste grâce à la commande :argdo comme suit
:argdo s/\<trait\>/abstract class/ge | update
La commande remplace toutes les occurrences du mot trait par abstract class (g fait que toutes les occurrences sont remplacées par fichier et pas seulement la première), et enregistre le fichier après coup grâce à la commande update
Und voilà !
Il est possible d'enrichir une liste de fichiers existante via la commande :argadd file et de supprimer un fichier de la liste via :argdelete file