Re: ^M invisible dans un fichier DOS...

トップ ページ

このメッセージに返信
著者: LIGIER Philippe
日付:  
To: Patrice Karatchentzeff, ML Guilde
題目: Re: ^M invisible dans un fichier DOS...
On Wed, 15 Mar 2006 16:02:24 +0100, Patrice Karatchentzeff
<patrice.karatchentzeff@???> wrote:

> Salut,
>
> Je viens de perdre un temps fou sur la compréhension d'un problème
> (un fichier perl qui ne voulait pas se lancer).
>
> Il s'agissait tout bonnement d'un fichier au format DOS (avec des ^M
> (ie \r\n) à la fin de chaque ligne).
>
> Il y a bien longtemps, le comportement *par défaut* de Vim et Emacs
> étaient de montrer cette saleté de caractère de contrôle
> supplémentaire... or, ce n'est plus le cas.
>
> Question à deux balles : comment réaffiche-t-on cela sous Emacs et sous
> Vim...
>
> Sous nvi, cela fonctionne comme avant.
>
> Merci
>
> PK
>
> --
> |\      _,,,---,,_       Patrice KARATCHENTZEFF
> ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:p.karatchentzeff@free.fr
> |,4-) )-,_. ,\ (  `'-'  http://p.karatchentzeff.free.fr
> '---''(_/--'  `-'\_)

>
>


Ben oui, avec les dernières versions de Vim, les microttesofteries de fin
de ligne ne sont plus visualisées, et il n'y a rien de prévu dans les
informations affichables dans la ligne de statut en bas du buffeur (y a le
filetype, mais pas le fileformat).

En attendant mieux, on peut toujours se débrouiller avec une auto-commande
exécutée au chargement des fichiers. Par exemple tu ajoute dans le fichier
'.vimrc' :

  "------------------------------------------------------------------------- 
--------------------------------
  "    Détection d'une microttesofterie
  autocmd  BufRead  * if &fileformat == "dos" | let x = confirm ( "Actung : 
fichier en format dos" ) | endif
  "------------------------------------------------------------------------- 
--------------------------------


Ça, c'est la version minimale (dans un fichier '.vimrc' on peut pas écrire
un roman). Mais tu peux toujours améliorer, par exemple en créant un petit
script (même pas besoin d'un fonction) qui te permet de choisir de modifier
ou non le format utilisé. Exemple d'un petit fichier appelé
"detect_microsofterie.vim" placé dans un répertoire de nom '.vim' situé
dans la Homedirectory' :

  "------------------------------------------------------------------------- 
--------------------
  let choix = confirm ( "Achtung : fichier en format DOS, passer en format 
Unix ?", "oui\nnon" )
  if choix == 1
    set fileformat=unix
  endif
  "------------------------------------------------------------------------- 
--------------------


Et la ligne du fichier '.vimrc' devient :

  "------------------------------------------------------------------------- 
--------------------------------
  "    Détection d'une microttesofterie
  autocmd  BufRead  * if &fileformat == "dos" | source 
~/.vim/detect_microttesofterie.vim | endif
  "------------------------------------------------------------------------- 
--------------------------------


Aux erreurs de frappe et recopie près, ça doit marcher (je l'utilise).
Ensuite tu peux toujours améliorer et completer.