[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Ligne vide (etait croneries)



On Wednesday 28 March 2001 10:40, cmartin@univ-brest.fr wrote:
> Bonjour,
> Le monsieur qui t'as parle de ligne vide utilise probablement emacs. En
> matiere de ligne, emacs est un mauvais editeur. En effet, sous unix,
> normalement une ligne est *terminee* par un retour chariot (\n), Il se
> trouve --vu la presentation a l'ecran que fait emacs-- qu'emacs
> considere que les lignes sont *separees* par des retour chariot.
>

D'accord pour le comportement d'emacs, qui me paraît le plus "naturel" (ne 
rajoute pas dans le dos de l'utilisateur de caractères spéciaux). Je constate 
que vi exige de tout fichier qu'ils se termine par un \n et qu'il le rajoute 
s'il est absent. 

C'est très bien pour éditer un crontab mais... connaissez-vous des pointeurs 
vers la définition de la 'ligne UNIX', hors le discours de vi ? Je vois 
plutôt le comportement de vi comme un pense-bête pour les 
admins-qui-oublient-de-coller-un-<eol>-avant-l'<eof> dans leurs fichiers de 
configuration. Me trompé-je ?

> Donc
> unix : toutes les lignes y compris la derniere ont un retour chariot.
> emacs : toutes les lignes sauf la derniere ont un retour chariot.

Disons : fin de ligne = <eol> | <eof>.
Cette histoire de ligne, c'est juste des conventions pour les fichiers texte. 
Une question de présentation. Je croyais qu'en UNIXland, il n' y a pas de 
'fichier texte' ou de 'fichier binaire', contrairement au monde merveilleux 
de DOS, mais je m'égare peut-être.

Je veux dire : si j'ouvre avec vi un flot binaire, et que malencontreusement 
je l'enregistre, il me colle automatiquement un <eol> manquant avant l'<eof> ?

>
> De la, la necessite d'ajouter *sous emacs* ce qui apparait comme une
> ligne vide, mais ce qui en fait n'est que la terminaison correcte de la
> derniere ligne du fichier.
>
> Chaque outil, demon, etc... suivant la maniere dont il analyse les
> fichiers se contente ou non d'une derniere ligne incorrecte, et peut
> parfaitement ignorer une derniere-ligne-qui-n'en-est-pas-une-puisqu'il
> lui-manque-un-retour-chariot.
>
> Les utilisateur de vi, par exemple, ont deja remarque ce genre de
> message :
> partial last line (derniere ligne partielle)
> ou [noeol] ([pasdefindeligne])
>
> 	Christophe
> --
> char*p="[)1++++++11+(QI1)9191991)9)1)(II1)919Y91)9)1)(AK+9;991+3*(9I1*IY991
>)Q1\
> )(1I1))A91991)Q1)(+)1)1++9;)Q1+(";main(_){while(*p){for(_=*p-32>>3;_;--_)
> putchar(' ');if(!(_=*p++-32&7))putchar('\n');else while(_--)printf("_/");}}



Reply to: