web-dev-qa-db-fra.com

^ M à la fin de chaque ligne de vim

Lorsque je modifie des fichiers source à l'aide de vim et d'autres éditeurs, parfois à la fin de la ligne, ces ^ M caractères se trouvent à la fin de chaque ligne. Je pense que cela a quelque chose à voir avec l'édition d'un fichier dans Windows, puis dans Linux. Comment puis-je supprimer tous ces automatiquement?

125
DHamrick

En tant que commande, tapez

:%s/^M$//

(Pour obtenir ^ M, appuyez sur ^ V ^ M, où ^ est CTRL sur la plupart des claviers)

126
Tobias Baaz

Un moyen simple de supprimer les fins de ligne DOS consiste à utiliser l'option ff:

:set ff=unix
:wq

Maintenant, votre fichier est de retour dans le bon vieux chemin Unix.

Si vous voulez ajouter les fins de ligne DOS (pour garder une imprimante heureuse ou transférer des fichiers avec des amis Windows n'ayant pas les outils Nice), vous pouvez facilement aller dans la direction opposée:

:set ff=dos
:wq
83
sarnold

Tu peux le faire:

:set fileformats=dos

Il va cacher le ^M 's, sans toucher le fichier.

33
jqno

Il existe un programme appelé dos2unix qui devrait vous en débarrasser. Windows utilise différents caractères de fin de ligne, raison pour laquelle cela se produit.

17
Adam Lassek

Cela a fonctionné pour moi dans un fichier qui avait tout sur une seule ligne:

D'abord trouver tous les matches

:%s/^M//

(Obtenir ^M, appuyez sur ^ V ^ M, où ^ est Ctrl sur la plupart des claviers)

Puis remplacez par des nouvelles lignes

:%s//\r/g

La commande combinée serait:

:%s/^M/\r/g
6
TheRealKingK

J'ai tendance à exécuter des fichiers affligés via fromdos avant de les rouvrir. fromdos fait partie du paquet tofrodos .

2
Ted Percival

L'origine du problème peut avoir été via un transfert FTP. Lorsque vous transférez ces fichiers d’une boîte à une autre par FTP, veillez à utiliser ASCII transferts. Utilisez la commande "ASC".

1
Spencer Ruport
" put this in your ~/.vimrc file and :source ~/.vimrc
" then you can do: Dos2Unix
" dos2unix ^M
fun! Dos2unixFunction()
    let _s=@/
    let l = line(".")
    let c = col(".")
    try
        set ff=unix
        w!
        "%s/\%x0d$//e
    catch /E32:/
        echo "Sorry, first save the file."
    endtry
    let @/=_s
    call cursor(l, c)
endfun
com! Dos2Unix keepjumps call Dos2unixFunction()
0
SergioAraujo

mcedit: shift + f2, définition du format unix (LF), ok

0
Vasily Chapaev