Peu de nouveautés sur ce blog qui semble, comme son auteur, souffrir de la canicule... Allez, juste une petite astuce Vim pour patienter... jusqu'à la prochaine (non, je n'oublie pas que j'avais l'intention de vous présenter plein de jeux en montant ce blog...).

Vous voulez supprimer toutes les lignes d'un fichier contenant un motif (par exemple le mot canicule avec ou sans majuscule au début) :

:g/[Cc]anicule/d

La difficulté (qui m'a fait chercher pendant cinq bonnes minutes) vient ici du fait que c'est le caractère g qui symbolise l'intégralité du fichier, et non % comme c'est le cas par ailleurs (je ne sais pas pourquoi et il fait trop chaud pour chercher). À part cela, ça fonctionne comme avec Sed (et tout le monde sait que Sed c'est bien). Le motif (généralement une expression régulière) est délimité par des slashes /. La commande d (comme delete) efface toute la ligne et non seulement le motif.

Si vous vouliez plutôt effacer le seul motif, il faut faire une substitution par rien. C'est-à-dire, utiliser la commande s comme cela :

:%s/[Cc]anicule//g

Ou encore, pour les plus optimistes :

:%s/[Cc]anicule/fraicheur/g

Mais là je dérive car le motif de la commande d'effacement de ligne n'a pas la même signification que celui de la subsitution. Pour l'effacement on parle d'étiquette. En effet, /canicule/ signifie « toute ligne où se trouve le mot "canicule" ». On pourrait très bien remplacer cela par une plage de lignes. Ici on efface toutes les lignes de la 10 à la 50.

:10,50d

Autre exemple : on efface la ligne courante et les 10 suivantes (soit 11 au total).

:.,+10d

Je vous avais prévenu que c'était de la petite astuce, pas de quoi entretenir ma réputation de fou dangereux.