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.

sss
la source
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.

Garrett
la source
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.

wisbucky
la source
Cela devrait être :e ++ff=unix, je crois.
fork0
0

:e ++ff=unix

(par fourche0) 54321

Jan Kyu Peblik
la source