Pricident Suivant Table des matihres

6. Recherche et remplacement

6.1 Recherche

Recherche incrémentale

La recherche de texte sous Emacs (incremental search) est légèrement différente de celle que font la plupart des autres éditeurs. Sa particularité est qu'elle est incrémentale, c'est-à-dire qu'elle commence à rechercher du texte avant même que l'utilisateur ai fini de le taper. L'utilisateur voit ainsi la recherche se faire et s'affiner au fur et à mesure qu'il saisit une chaîne. Ce type de recherche est pénible sur les terminaux à rafraîchissement lent (ou par telnet), mais il existe d'autres fonctions de recherche plus traditionnelles qui ne réaffichent pas l'écran à chaque saisie de caractère. L'incremental search commence au niveau du point, et peut continuer au début du buffer si elle arrive à sa fin.

Commandes de recherche incrémentale de texte:

Notons que si plusieurs occurrences d'un même texte se trouvent dans un buffer, alors la recherche s'arrète à la première. L'utilisateur peut accéder aux autres occurrences en utilisant à nouveau la commande C-s (ou C-r pour une recherche en arrière). La commande C-s C-s permet de faire une recherche sur la dernière occurrence recherchée.

Recherche non-incrémentale

Emacs peut aussi rechercher une chaîne sans faire de recherche incrémentale, c'est à dire que le buffer sur lequel se fait la recherche ne subbira pas de raffraîchissement à chaque saisie de caractère.

Recherche d'expressions régulières

Une expression régulière est une chaîne de caractères contenant des "caractères jokers", qui permettent chacun de remplacer un ou plusieurs autres caractères, comme le jeton blanc permet de remplacer d'autres caractères au scrabble. La recherche d'expressions régulières est une recherche puissante qui permet de rechercher à peu près n'importe quoi: adresses électroniques, prix, groupes de mots, ...

La recherche d'expressions régulières se fait grâce à la commande C-M-s (recherche en avant) ou à la commande C-M-r (recherche en arrière). Leur utilisation est à peu de choses près la même que celle des commandes C-s et C-r. Le passage d'une occurrence à une autre se fait par l'utilisation des commandes C-s et C-r respectivement.

Par exemple:

C-M-s [-a-zA-Z_\.]+@[-a-zA-Z0-9_\.]+\.\(fr\|com\|net\|org\) 
permet de rechercher la plupart des adresses électroniques.

Je conseille à qui voudrait en savoir plus sur les expressions régulières de se plonger dans le manuel d'Emacs à la section "Syntax of Regular Expressions" (environ cinq pages).

6.2 Remplacement

Il existe deux types de remplacement sous Emacs:

Chacun de ces remplacements a deux variantes: le remplacement de chaînes, et le remplacement d'expressions régulières.

Remplacement inconditionnel

Il remplace toutes les occurrences d'une chaîne passée en argument à partir du point par une autre chaîne passée elle aussi en argument sans demander confirmation à l'utilisateur.

Les commandes de remplacement sont:

Remplacement conditionnel

La différence entre ce type de remplacement et le précéent est que le remplacement conditionnel demande confirmation à l'utilisateur pour chaque occurrence. Les commandes de remplacement conditionnel sont:

A chaque fois qu'Emacs demande confirmation à l'utilisateur, celui-ci à le choix entre différentes possibilités, qu'il choisit en saisissant un caractère au clavier:


Pricident Suivant Table des matihres