675 Stimmen

Was bedeutet das Zeichen ^M in Vim?

Ich bekomme ständig ^M Zeichen in meiner vimrc und das macht meine Konfiguration kaputt.

25voto

Freedom_Ben Punkte 10232

Ich habe sie alle mit sed entfernt:

sed -i -e 's/\r//g' <filename>

Kann auch durch eine andere Zeichenfolge oder ein anderes Zeichen ersetzt werden. Wenn es zum Beispiel noch keine Zeilenumbrüche gibt, können Sie \r in \n :

sed -i -e 's/\r/\n/g' <filename>

Diese sed Befehle funktionieren unter der GNU/Linux-Version von sed kann aber auf BSDs (einschließlich macOS) angepasst werden müssen.

9voto

Anthony Palmer Punkte 914

Ich habe eine Textdatei, die ursprünglich auf einer Windows-Maschine von einem Mac-Benutzer erstellt wurde, und musste sie in eine Linux-MySQL-DB importieren, indem ich die load data Befehl.

Obwohl VIM das Zeichen "^M" anzeigte, funktionierte keine der oben genannten Maßnahmen bei meinem speziellen Problem. Die Lösung war am Ende ziemlich einfach (nach viel Frustration).

Lösung: Ausführen von dos2unix ZWEIMAL auf dieselbe Datei hat den Trick gemacht! Die Verwendung der file zeigt an, was auf dem Weg dorthin passiert.

$ file 'file.txt'
file.txt: ASCII text, with CRLF, CR line terminators

$ dos2unix 'file.txt'
dos2unix: converting file file.txt to UNIX format ...
$ file 'file.txt'
file.txt: ASCII text, with CRLF line terminators

$ dos2unix 'file.txt'
dos2unix: converting file file.txt to UNIX format ...
$ file 'file.txt'
file.txt: ASCII text

Und die endgültige Version der Datei wurde perfekt in die Datenbank importiert.

9voto

Irving Rabin Punkte 89

Unter Unix ist es wahrscheinlich einfacher, den Befehl 'tr' zu verwenden.

cat file1.txt | tr "\r" "\n" > file2.txt

7voto

Sardeep Lakhera Punkte 379

Das ist das einzige, was in meinem Fall funktioniert hat:

:e ++ff=dos

:wq

5voto

ebk Punkte 456

Wenn Sie keinen anderen Namen angegeben haben fileformat absichtlich (sagen wir, :e ++ff=unix für eine Windows-Datei), ist es wahrscheinlich, dass die Zieldatei gemischte EOLs hat.

Wenn eine Datei zum Beispiel einige Zeilen mit <CR><NL> Endungen und andere mit <NL> Endungen, und fileformat wird eingestellt auf unix automatisch von Vim beim Lesen, ^M (<CR>) erscheinen wird. In solchen Fällen, fileformats (Hinweis: Es gibt eine zusätzliche s ) ins Spiel kommt. Siehe :help ffs für die Einzelheiten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X