Si j'ouvre des fichiers que j'ai créés dans Windows, les lignes se terminent toutes par ^M. 
Comment supprimer ces caractères d'un coup?
Si j'ouvre des fichiers que j'ai créés dans Windows, les lignes se terminent toutes par ^M. 
Comment supprimer ces caractères d'un coup?
Réponses:
dos2unix est un utilitaire de ligne de commande qui le fera, ou le :%s/^M//gfera si vous utilisez Ctrl- v Ctrl- mpour saisir le ^ M, ou vous pouvez :set ff=unixet vim le fera pour vous.
Les documents sur le paramètre «format de fichier» sont ici , et le wiki vim a une page complète sur les conversions de fin de ligne .
Alternativement, si vous déplacez beaucoup de fichiers dans les deux sens, vous ne voudrez peut-être pas les convertir, mais plutôt pour le faire :set ff=dos, donc vim saura qu'il s'agit d'un fichier DOS et utilisera les conventions DOS pour les fins de ligne.
:%s/^M//gdevrait être :%s/\r//g, car ^Msignifie simplement "correspondre à la majuscule" M "au début de la ligne".
                    :%s/\r//gfonctionné pour moi, cheers @Bunyk
                    set ff=unixne fait rien. Peut-être qu'il convertit le fichier, mais tous les ^Mpersonnages sont toujours là.
                    Modifiez les fins de ligne dans la vue:
:e ++ff=dos
:e ++ff=mac
:e ++ff=unix
Cela peut également être utilisé comme opération de sauvegarde (: w seul ne sauvegardera 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 à partir de la ligne de commande:
for file in *.cpp
do 
    vi +':w ++ff=unix' +':q' "$file"
done
:w +ff=unixest tellement plus agréable que la plupart des autres choses écrites ici, et le script bash est un bon bonus.
                    :ecommandes ne semblent rien faire sur mon installation de Windows vim. Ma vue montre toujours les ^Mcodes.
                    J'utilise généralement
:%s/\r/\r/g
ce qui semble un peu étrange, mais fonctionne à cause de la façon dont vim correspond aux sauts de ligne. Je trouve aussi plus facile de m'en souvenir :)
:set ff=unixauparavant, mais le fichier que j'ai ouvert aujourd'hui a dû être particulièrement étrange. Vim a dit que c'était déjà le cas fileformat=unixmais que toutes les fins de ligne l'étaient ^M. Cette solution a fonctionné pour moi.
                    :%s/\r//gfonctionne plutôt pour moi.
                    :%s/\r//gest la seule solution à usage général - en particulier pour les fichiers en mode mixte contenant un mélange hétérogène de nouvelles lignes de style DOS et UNIX. Les solutions canoniques (par exemple :set ff=unix, :e ++ff=unix) prennent toutes les lignes des extrémités de tampon courant dans le même style de saut de ligne. Parfois, ils le font; parfois non. Cue sadface. 
                    Je préfère utiliser la commande suivante:
:set fileformat=unix
Vous pouvez également utiliser macou dospour convertir respectivement votre fichier en macintosh ou convention de fichiers MS-DOS / MS-Windows. Et cela ne fait rien si le fichier est déjà au format correct.
Pour plus d'informations, consultez l'aide de vim:
:help fileformat
^Mcaractères.
                    set fileformat=unixà mon fichier .vimrc a fonctionné.
                    :set fileformat=unix pour convertir de dos à unix.
:%s/\r+//g
Dans Vim, cela supprime tous les retours chariot et ne laisse que des retours à la ligne.
:%s/\r//gil fonctionnait comme un charme.
                    à partir de: http://vim.wikia.com/wiki/Change_end-of-line_format_for_dos-mac-unix
[Échap]:% s / \ r $ //
@ https://gist.github.com/sparkida/7773170
find $(pwd) -type f -name "*.ext" | while read file; do sed -e 's/^M//g' -i "$file"; done;
aussi, comme mentionné ci-dessus ^ M = Ctrl+V+ Ctrl+M(ne vous contentez pas de taper le symbole caret "^" et M)
dos2unix peut modifier directement le contenu du fichier.
Vous pouvez directement l'utiliser sur le fichier, sans avoir besoin de redirection de fichier temporaire.
dos2unix input.txt input.txt
Ce qui précède utilise le clavier américain supposé. Utilisez l' -option 437 pour utiliser le clavier britannique.
dos2unix -437 input.txt input.txt
tr -d '\15\32' < winfile.txt > unixfile.txt
(voir: http://kb.iu.edu/data/acux.html )
Les étapes suivantes peuvent convertir le format de fichier de dos en unix:
:e ++ff=dos  Edit file again, using dos file format ('fileformats' is ignored).[A 1]
:setlocal ff=unix    This buffer will use LF-only line endings when written.[A 2]
:w   Write buffer using unix (LF-only) line endings.
Référence: http://vim.wikia.com/wiki/Change_end-of-line_format_for_dos-mac-unix
Le commentaire à propos de l'apparition du ^ M est ce qui a fonctionné pour moi. Le simple fait de taper "^ M" dans mon vi n'a rien (introuvable). Le CTRL+ V CTRL+M séquence a parfaitement fait.
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
:%splace du :1,$s. %est un raccourci pour 1,$.
                    J'ai trouvé un moyen très simple: Ouvrez le fichier avec nano: nano file.txt
Appuyez sur CTRL+ Opour enregistrer, mais avant d'appuyer sur Enter, appuyez sur:ALT + Dpour basculer entre les fins de ligne DOS et Unix / Linux, ou: ALT+ Mpour basculer entre les fins de ligne Mac et Unix / Linux, puis appuyez sur Enterpour enregistrer et CTRL+ Xpour quitter.
^Mfins. enregistrer sous dos pour conserver, enregistrer sous linux pour supprimer. peut vérifier en utilisantcat -v
                    :g/Ctrl-v Ctrl-m/s///
CtrlMest le caractère \r, ou retour chariot, ajouté par les fins de ligne DOS. CtrlVindique à vim d'insérer un CtrlMcaractère littéral sur la ligne de commande.
Pris dans son ensemble, cette commande remplace tout \rpar rien, en les supprimant de la fin des lignes.
Vous pouvez utiliser:
vim somefile.txt +"%s/\r/\r/g" +wq
ou dos2unix utility.
Dans vim, saisissez:
:w !dos2unix %
Cela dirigera le contenu de votre tampon actuel vers la commande dos2unix et écrira les résultats sur le contenu actuel. Vim vous demandera de recharger le fichier après
Il y a généralement un dos2unix commande que vous pouvez utiliser pour cela, assurez-vous simplement de lire le manuel car les versions GNU et BSD diffèrent sur la façon dont elles traitent les arguments.
Version BSD:
dos2unix $FILENAME $FILENAME_OUT
mv $FILENAME_OUT $FILENAME
Version GNU:
dos2unix $FILENAME
Alternativement, vous pouvez créer la vôtre dos2unixavec l'une des réponses proposées ici, par exemple:
function dos2unix(){
    [ "${!}" ] && [ -f "{$1}" ] || return 1;
    { echo ':set ff=unix';
      echo ':wq';
    } | vim "${1}";
}
Je savais que j'avais vu ça quelque part. Voici l'astuce de connexion à FreeBSD:
Besoin de supprimer tous ces caractères ^ M d'un fichier DOS? Essayer
tr -d \\r < dosfile > newfile
    -- Originally by Dru <genesis@istar.ca>
Bien que ce sujet soit très ancien, j'aimerais mettre un autre truc de Wikia:
%s/\r\+$//g
qui remplissent trouver tous les signes de retour chariot (un et plusieurs représentants) jusqu'à la fin de la ligne et supprimer, \nrestera donc à eol.
C'est mon chemin. J'ai ouvert un fichier dans dos EOL et quand j'enregistre le fichier qui sera automatiquement converti en unix EOL
autocmd BufWrite * :set ff=unix
si vous créez un fichier dans NotePad ou NotePad ++ dans Windows et que vous le portez à Linux et l'ouvrez par vim, vous verrez ^ M à la fin de chaque ligne. Pour supprimer cela,
Sur votre terminal Linux, saisissez
dos2unix filename.ext
Cela fera la magie requise.
Je voulais des nouvelles lignes à la place des ^ M. Perl à la rescousse:
perl -pi.bak -e 's/\x0d/\n/g' excel_created.txt
Ou pour écrire à stdout:
perl -p -e 's/\x0d/\n/g' < excel_created.txt
hexdump -C badfileet voyez0x0d 0x0a"\r\n"que c'est votre problème.