769 votes

Convertir les terminaisons de ligne DOS en terminaisons de ligne Linux dans Vim

Si j'ouvre les fichiers que j'ai créés dans Windows, les lignes se terminent toutes par ^M . Comment supprimer ces caractères en une seule fois ?

1 votes

Si vous faites un hexdump -C badfile et voir 0x0d 0x0a "\r\n" c'est votre problème.

7voto

MichaelD Points 61
tr -d '\15\32' < winfile.txt > unixfile.txt

(Voir : Conversion entre les fichiers texte Unix et Windows )

7voto

Victor S. Points 481

Dans le VIM :

:e ++ff=dos | set ff=unix | w!

Dans le shell avec VIM :

vim some_file.txt +'e ++ff=dos | set ff=unix | wq!'

e ++ff=dos - forcer l'ouverture du fichier dans dos format.

set ff=unix - convertir un fichier en unix format.

5voto

Dave Webb Points 90034

Avec la commande suivante :

:%s/^M$//g

Pour obtenir le ^M pour apparaître, tapez CtrlV et ensuite CtrlM . CtrlV indique à Vim de prendre le prochain caractère saisi littéralement.

5voto

Dannid Points 147

Le commentaire concernant l'apparition du ^M est ce qui a fonctionné pour moi. En tapant simplement "^M" dans mon vi, je n'ai rien obtenu (pas trouvé). Le site CTRL + V CTRL + M La séquence l'a fait parfaitement.

Ma commande de substitution de travail était

:%s/Ctrl-V Ctrl-M/\r/g

et ça ressemblait à ça sur mon écran :

:%s/^M/\r/g

5voto

CBuzatu Points 342

Pour s'exécuter directement dans une console Linux :

vim file.txt +"set ff=unix" +wq

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X