Le mercredi 15 janvier 2003 à 15:58, Luc Hermitte a écrit: > Salut, Lut,
> Je suis intrigué par le titre de ton message ... Pourquoi continues-tu à > utiliser des autocommands ? Procéder avec les mail ftplugins est bien > plus propre. oki oki... je promet que je vais me pencher sur la question...mais j'ai pas trop le courage ;) > * On Wed, Jan 15, 2003 at 01:18:06PM +0100, Sébastien MICHEL <[EMAIL PROTECTED]> >wrote: > > Je suis entrain de revoir mes fonction de remise en forme > > de mail. > > Voici ce que j'ai pour l'instant > > map ;vide :0<CR>/^$<CR> > > map ;par ;vide<CR>:.,$normal vgq<CR> > > > > voici ce que je veux faire: > > map ;para ;vide<CR>/^.\{75\}.\+$<CR>v/\.$<CR>gqj > > Utilises &tw plutot que 75. Comme ça si un jour tu veux changer de > valeur ou en faire profiter d'autres personnes, tu n'auras rien d'autre > à faire qu'un : > :set tw=72 marche pas il me fait: "Syntax error in \{...}" > Sinon, j'imagine que tu considères que les paragraphes sont délimités par > des points et non par des lignes vides. maintenant voici comment je fais: map ;par ;vide<CR>:.,$g/^.\{75\}.\+$/normal V)gq<CR> autocmd BufRead .followup,.article*,.letter,/tmp/mutt*,*.txt normal ;par > > mais j'aimerai le faire dans une boucle du genre > > while /^.\{75\}.\+$ > > ;para > > endwhile > > > L'ideale serai de ne pas touche ma signature aussi... ;) > > je vais essayer de remplacer ce while par un g// pour eviter > > la creation d'une fonction mais c'est pas gagné ;p > > Faire des fonctions n'a rien de sale. C'est bien plus lisible et > maintenable que les mappings 100 vi (sans 'm'). > Pourquoi pas un truc du style (pas testé): J'ai pas dis que c'était sale... Je voulais juste evité car je n'ai pas assez de connaissance en script vim... mais avec ton exemple ça ira mieux :) > function s:Toto() A quoi sert le "s:" d'après ce que j'ai compris tu n'en a pas besoin si tu appelle ta fonction avec une majuscule ? > let pos = line('.') > normal! G > let fin = search('^-- $', 'b') > if fin <= 0 | let fin = line('$') | endif > exe pos > while pos < fin > let pos = search('^.\{'.&tw.'}.\+$', 'W') > " Sans le 'W', la function pourrait boucler et revenir à la > " section des entêtes. Chose que fait aussi '/' si 'wrapscan' > " n'est pas mis à faux. > if pos <= 0 > break > endif > :normal! gq/\.$j > " forme simplifiée sans passer par 'v' vu que 'gq' nous laisse > " dans l'/operator-pending mode/, cf |motion.txt| > " :normal! gq'} ^ ' est vraiment utile ? > " +--> pour: jusqu'à la fin du paragraphe plutot que le point > " suivant. Tout le monde ne pense pas à mettre des points > " à la fin ses phrases. Sauter des lignes est plus > " fréquent. > endwhile > endfunction > > :nnoremap ;doit gg'}:call <sid>Toto()<cr> ^^^^^ ??? Cool... Tu as de la doc pour apprendre a faire des scripts vim je n'en trouve pas... a part regarder les scripts des autres ;). > Par contre, c'est totalement inadapté à des messages comme celui-ci qui > contient du code. Pour quel raison c'est inadequat ? Merci . -- @+, Sébastien aka. MichouX "J'ai réalisé que j'étais un fan de Vim quand je l'utilisais pour éditer mon .emacs", GnuVince