Commande global, changement de casse, commandes externes

Nous allons ici aborder quelques notions de base permettant de travailler sur un texte existant. Les modifications peuvent parfois nécessiter de faire appel à un programme externe.

Commande global
La commande :global permet de rechercher un motif particulier et d’exécuter une commande particulière sur la correspondance trouvée.
Par exemple, si l’on souhaire remplacer le mot ‘variable’ par ‘constante’ au sein d’un commentaire de type C++, il est possible d’employer la commande suivante :

:g+//+s/variable/constante/g

On recherche ici les caractères // (début de commentaire C++). Sur les lignes trouvées, on applique une substitution comme spécifié plus haut.
Vous aurez remarqué qu’on utilise le caractère + comme délimiteur (au lieu de / utilisé le plus souvent) pour des raisons de lisibilité.

Changement de casse

Pour passer du texte en minuscule ou en majuscule, il faut utiliser la commande gU (majuscule) ou gu (minuscule). Vous pouvez faire succéder la commande par w qui changera la casse du mot sous le curseur (gUw par exemple). Les objets textuels fonctionnent évidemment tout aussi bien.

Pour inverser la casse, il faut employer le caractère ~ en lieu et place de u.

Si vous doublez votre commande, ceci s’appliquera à la ligne entière (gUgU ou encore gUU).

Commandes externes

Le caractère ! permet d’appeler une commande externe de type unix de manière à effectuer tâche particulière que Vim ne sait pas faire.
Si l’on souhaite par exemple ajouter la date du jour dans le fichier, la commande unix ‘date’ permet de nous faciliter la tâche.
!!date +%d/%m/%y

Le point d’exclamation en double permet de préciser à Vim que nous travaillons sur la ligne courante.
Ensuite on retrouve notre commande date accompagnée de ses paramètres pour un affichage de la forme jour/mois/année.

Vous pouvez aussi lire le contenu de la sortie standard d’une commande.
:5read !ls -l

permet de lister les fichiers du répertoire courant et de les insérer à la ligne 5.

A l’inverse, il est possible d’envoyer sur l’entrée standard d’un programme externe une partie de texte.
:write !wc -w
Ceci affichera le nombre de mots du buffer en cours.

Laisser un commentaire