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?
En tant que commande, tapez
:%s/^M$//
(Pour obtenir ^ M, appuyez sur ^ V ^ M, où ^ est CTRL sur la plupart des claviers)
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
Tu peux le faire:
:set fileformats=dos
Il va cacher le ^M
's, sans toucher le fichier.
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.
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
J'ai tendance à exécuter des fichiers affligés via fromdos
avant de les rouvrir. fromdos
fait partie du paquet tofrodos .
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".
" 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()
mcedit: shift + f2, définition du format unix (LF), ok