(Courriels de diversion: <redoraient@affacturer-relogerez.com> <frise@taira-placa.com> <bas-fonds@repu-graisserez.com> <rattacheriez@ciselent-allegeraient.com> <labouriez@accomplissent-suivantes.com> <refroidisse@catalyserait-attardez.com> <ostracismes@defectueuse-reinstallee.com> <curiste@approximation-inaugurions.com> <charcuterait@encollent-baba.com> <tromperas@etaieras-pliure.com> )


* On Tue, Jul 29, 2003 at 06:04:08PM +0200, ROSSEL Olivier <olivier.rossel@airbus.com> wrote:
:vnoremap µ :s#\(</i>\)\=$#\=((submatch(1)!='')?'</i><br><br>':'<br>')#<cr>

> C quoi le \= dans tes regexp?

En fait, il y en a deux.
Le premier qui se trouve dans la regex c'est pour dire que l'on demande
une ou 0 occurrence de l'atome précédent (comme '?' avec perl je crois
bien).

Le second ... est une grosse feinte. Il se place juste après le
caractère utilisé pour délimiter les champs de :subtitute et dit que ce
qui suit est une expression qu'il va falloir évaluer.

Qui dit expression dit tout et n'importe quoi (au sens Vim), soit
nombres et chaines de caractères sur lesquels on fait un peu ce que l'on
veut.
Sans cela, on n'aurait pu utiliser qu'une chaine de caractères "fixe" --
aux '\1', '\n' près.

Et ici, l'expression va s'évaluer en fonction d'un truc que l'on teste :
à savoir si l'atome 1 extrait dans la regexp est vide ou non. Si pas
vide, on subtitue par '</i><br><br>', sinon par '<br>' seulement.


> Le test pour faire de la substitution conditionnelle, c'est fatal !!!

Oui. Et on peut faire des trucs encore plus poussés avec p.ex. des
squelettes qui seront "expanded" (oublié le mot français) par une chose
ou une autre en fonction d'un choix de l'utilisateur -- cf mu-template
sur mon site. 

-- 
Luc Hermitte

--------------------------------------------------------------------
Les listes de diffusion occultes: <URL:http://www.CULTe.org/listes/>