Vi sous Linux: affiche les fins de ligne ^ M pour les fichiers au format DOS


10

Sous Solaris, si vous ouvrez un fichier dans vi qui a des fins de ligne Windows, cela apparaît comme ^ M à la fin de chaque ligne.

Sous Linux, vi est plus intelligent et comprend le format de fichier Windows et n'affiche pas ^ M.

Existe-t-il un paramètre pour que Linux vi se comporte de la même manière que Solaris à cet égard?

Un problème commun pour nous est de copier un script shell sur une boîte de développement (Windows) et d'oublier de le dos2unix, puis d'être confus lorsqu'il ne fonctionne pas correctement. Sur Solaris, le problème est évident dès que vous vi le fichier, mais pas sur Linux.

Merci.


Sous Linux, vi est généralement le vim de Bram Moolenaar , je m'attends à ce que le vi sur Solaris soit le Bill Joy vi , original, authentique mais moins performant.
RedGrittyBrick

Sur mon vim, par défaut, je ne vois généralement pas ^M, mais parfois il y en a un à la fin du fichier.
trysis

Réponses:


10

Essayez :set ffs=unixau démarrage de vi (ou définissez-le par défaut dans vimrc) qui devrait afficher tous les caractères CR comme ^M.

vi devine automatiquement le format à utiliser selon qu'il rencontre ou non des lignes se terminant par juste LF ou les deux CR / LF.


2
@RedGrittyBrick - Sur mon système, :set listapparaît $à la fin de toutes les lignes (format Unix et DOS), donc n'aide pas à distinguer les deux.
sss

@sss: Mon erreur, je vais supprimer le commentaire.
RedGrittyBrick

2
@gman - cette commande n'a pas fonctionné pour moi précisément - j'ai compris Not an editor command: ffs=unix- mais m'a mis sur la bonne voie. L'exécution :set ffs=unixavec le fichier ouvert dans vi n'a pas fonctionné - aucune erreur mais rien ne s'est produit. J'ai mis set ffs=unixmon fichier .vimrc et cela a fonctionné.
sss

J'ai vécu exactement la même chose que @sss
SSH Ce

Cela corrompt ainsi la configuration utilisateur soigneusement préparée. Je veux très probablement ffsexactement ce que c'est. Mais voyez la réponse de @wisbucky.
fork0

2

Pour afficher les fins de ligne dos pour le fichier actuel:

:e +ff=unix

Cela force le format de fichier à unix, qui sera rendu CRcomme^M


Pour rendre ce paramètre permanent, ajoutez à ~/.vimrc:

set ffs=unix

Notez que le paramètre .vimrc ne l'est ffspas ff.


Cela devrait être :e ++ff=unix, je crois.
fork0

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.