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.

1143voto

pjz Points 11925

dos2unix est un utilitaire en ligne de commande qui permet d'effectuer cette opération, ou bien :%s/^M//g si vous utilisez Ctrl - v Ctrl - m pour saisir le ^M, ou vous pouvez :set ff=unix et Vim le fera pour vous.

Il existe une documentation sur le format de fichier et le wiki de Vim dispose d'un guide complet de l'utilisateur. conversion des pages en fin de ligne .

Par ailleurs, si vous déplacez souvent des fichiers dans les deux sens, il se peut que vous ne souhaitiez pas les convertir, mais plutôt effectuer les opérations suivantes :set ff=dos afin que Vim sache qu'il s'agit d'un fichier DOS et utilise les conventions DOS pour les fins de ligne.

1 votes

C'était ça pour moi, merci mon pote :> Bash ne voulait pas lancer le script à cause des fins de lignes. Stupide notepad vraiment...

61 votes

:%s/^M//g devrait être :%s/\r//g parce que ^M signifie simplement "correspondre à un "M" majuscule en début de ligne".

88 votes

Pas si vous faites comme la réponse le dit et "utilisez ctrl-v ctrl-m pour entrer le ^M".

304voto

Ludvig A Norin Points 2094

Modifiez les fins de ligne dans la vue :

:e ++ff=dos
:e ++ff=mac
:e ++ff=unix

Ceci peut également être utilisé comme opération de sauvegarde (:w seul n'enregistrera pas en utilisant les fins de ligne que vous voyez à l'écran) :

:w ++ff=dos
:w ++ff=mac
:w ++ff=unix

Et vous pouvez l'utiliser depuis la ligne de commande :

for file in *.cpp
do 
    vi +':w ++ff=unix' +':q' "$file"
done

4 votes

Merci beaucoup. J'ai essayé vi +':wq ++ff=unix' <filepath> pour un paresseux comme moi.

3 votes

Ce devrait être la réponse la plus votée. :w +ff=unix est tellement plus agréable que la plupart des autres choses écrites ici, et le script de bash est un bonus agréable.

1 votes

Le site :e ne semblent rien faire sur mon installation de vim sous Windows. Ma vue affiche toujours le ^M codes.

169voto

J'utilise généralement

:%s/\r/\r/g

ce qui semble un peu étrange, mais fonctionne grâce à la façon dont Vim fait correspondre les sauts de ligne. Je trouve aussi que c'est plus facile à retenir :)

109voto

Sylvain Defresne Points 15231

Je préfère utiliser la commande suivante :

:set fileformat=unix

Vous pouvez également utiliser mac ou dos pour convertir respectivement votre fichier en convention de fichier Mac ou MS-DOS/Windows. Et il ne fait rien si le fichier est déjà dans le bon format.

Pour plus d'informations, consultez l'aide de Vim :

:help fileformat

2 votes

Cette commande ne semble rien faire sur mon vim Windows. Ma vue a toujours ^M caractères.

0 votes

Ajout de set fileformat=unix à mon fichier .vimrc a fonctionné.

21voto

:set fileformat=unix pour passer de DOS à Unix.

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