Vim zeigt in jeder Zeile mit der Endung ^M
Wie kann ich diesen durch einen "normalen" Zeilenumbruch ersetzen?
Vim zeigt in jeder Zeile mit der Endung ^M
Wie kann ich diesen durch einen "normalen" Zeilenumbruch ersetzen?
Erstens, verwenden Sie :set ff?
um herauszufinden, welches Dateiformat Ihre Datei hat.
Ich denke, es könnte sein unix
dann liegt das Problem darin, dass Ihre Datei mit fileformat=dos
Hinzufügen von "^M^J" am Zeilenende, aber lesen mit flieformat=unix
nur das "^J" vom Zeilenende entfernt und das "^M" dort belassen.
Einfach eingeben :e ++ff=dos
in der Vim-Befehlszeile, um das Format Ihrer Datei von Unix auf Dos zu ändern. Damit sollte das Problem gelöst sein. Falls nicht, :%s/\r//g
sollte Ihnen weiterhelfen.
Um das Zeichen ^M zu finden, musste ich es visuell markieren und dann mit dem OS-Befehl "In die Zwischenablage kopieren" abrufen. Sie können es testen, indem Sie nach dem Zeichen suchen, bevor Sie den Ersetzungsbefehl ausprobieren.
/^M
sollte die erste schlechte Zeile auswählen
:%s/^M/\r/g
ersetzt alle fehlerhaften ^M durch Zeilenumbrüche.
Dies ist wie die Funktionen in MacVim, das auf gvim 7 basiert.
EDIT :
Ich habe dieses Problem wieder auf meiner Windows 10 Maschine, die Ubuntu für Windows hat, und ich denke, dass dies Dateiformat Probleme für vim verursacht. In diesem Fall Ändern der ff zu unix, mac, oder dos hat nichts anderes als die ^M zu ^J und wieder zurück zu ändern.
Die Lösung in diesem Fall:
:%s/\r$/ /g
:%s/ $//g
Ich habe mich für diesen Weg entschieden, weil ich sichergehen wollte, dass ich meine Datei nicht zerstörerisch bearbeite. Ich könnte haben :%s/\r$//g
aber das hätte die Zeilenumbrüche gelöscht, was zu unerwarteten Ergebnissen führen könnte. Stattdessen wandeln wir das einzelne CR-Zeichen, hier ein ^M-Zeichen, in ein Leerzeichen um und entfernen dann alle Leerzeichen am Ende der Zeilen (was für mich in jedem Fall ein wünschenswertes Ergebnis ist)
Es tut mir leid, dass ich eine alte Frage wiederbelebt habe, die schon lange beantwortet wurde, aber es schien eine gewisse Verwirrung zu herrschen, und ich dachte, ich würde dazu beitragen, einiges davon aufzuklären, da dieses Thema in der Google-Suche weit oben erscheint.
Bei mir hat nichts davon funktioniert, also habe ich das hier ausprobiert, und es hat funktioniert:
Typ :%s/
Presse CTRL-VCTRL-M
Typ //g
Presse Enter
Der Gesamtbefehl in Vim sollte also wie folgt aussehen :%s/^M//g
Was dies bewirkt: :%s
(suchen und ersetzen) /^M/
(dieses Symbol) /
(ohne Zeichen) g
(global).
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.