vim wird in jeder Zeile mit ^ M angezeigt
Wie kann ich dies durch einen "normalen" Zeilenumbruch ersetzen?
vim
line-breaks
ByteNirvana
quelle
quelle
Antworten:
Dies ist das einzige, was für mich funktioniert hat:
Gefunden unter: http://vim.wikia.com/wiki/File_format
quelle
:e ++ff=dos
gefolgt von:set ff=unix
konvertiert die Endungen in ein normales Format.Befehl
Wo
<Ctrl-V><Ctrl-M>
bedeutet, geben Sie Ctrl+ Vdann Ctrl+ M.Erläuterung
Ersatz,% = alle Zeilen
^ M-Zeichen (Strg-V ist eine Vim-Methode zum Schreiben des Strg-Zeichens ^ und Strg-M schreibt das M nach dem regulären Ausdruck, was zu einem ^ M-Sonderzeichen führt.)
mit neuer Zeile (
\r
)Und das global (nicht nur beim ersten Auftreten in der Leitung).
quelle
:%s/<Ctrl-V><Ctrl-M>/\r/g
(wobei \ r das ^ M durch eine neue Zeile ersetzt).Unter Linux und Mac OS funktioniert Folgendes:
wo
^V^M
bedeutet Typ Ctrl+ V, dann Ctrl+ M.Hinweis: Unter Windows möchten Sie wahrscheinlich
^Q
anstelle von verwenden^V
, da standardmäßig^V
das Einfügen von Text zugeordnet ist.quelle
%s/\r/\r/g
unter MacVim für eine Datei, die nur^M
am Zeilenende angezeigt wird (eine lange Zeile in MacVim-Begriffen), gut funktioniert. \ R bedeutet eindeutig verschiedene Dinge im Muster im Vergleich zu Ersatzteilen dieses Befehls.Innerhalb
vim
, Blick auf das Dateiformat - DOS oder Unix::set filetype=unix
:set fileformat=unix
Die Datei wird ohne Wagenrücklaufzeichen (CR, ^ M) zurückgeschrieben.
quelle
set ff=unix
als kleine Verknüpfung auf die gleiche Weiseft
eine Verknüpfung fürfiletype
In einer Datei, die ich mit BBEdit in MacVim erstellt hatte, wurden
^M
anstelle der regulären Zeilen eine Reihe von Zeilenrückgaben angezeigt . Der folgende String-Ersatz hat das Problem behoben - ich hoffe, dies hilft:Es ist interessant, weil ich Zeilenumbrüche durch dasselbe Zeichen ersetze, aber ich nehme an, dass Vim nur ein neues \ r benötigt, um korrekt angezeigt zu werden. Es würde mich interessieren, warum dies funktioniert.
quelle
\r
Zeichen zu ersetzen,\n
obwohl dies\r
als Ersatz angegeben wurde. Nicht beschweren, genau das wollte ich. Einfach nur komisch.Verwenden Sie zunächst
:set ff?
, um das Dateiformat Ihrer Datei zu ermitteln.Ich denke, es könnte sein
unix
, dann besteht das Problem darin, dass Ihre Datei mit demfileformat=dos
Hinzufügen von "^ M ^ J" am Zeilenende erstellt wurde, aberflieformat=unix
nur mit dem Entfernen des "^ J" vom Zeilenende gelesen wurde und das "^ M" dort belassen wurde.:e ++ff=dos
Geben Sie einfach in die Vim-Befehlszeile ein, um das Format Ihrer Datei von Unix auf dos zu ändern. Es sollte das Problem lösen. Wenn nicht,:%s/\r//g
sollte Ihnen helfen.quelle
:e ++ff=dos
dann:set ff=unix
und:w
Um das übereinstimmende ^ M-Zeichen zu erhalten, musste ich es visuell auswählen und dann den Befehl zum Kopieren in die Zwischenablage des Betriebssystems verwenden, um es abzurufen. Sie können es testen, indem Sie nach dem Zeichen suchen, bevor Sie den Befehl replace ausführen.
sollte die erste schlechte Zeile auswählen
ersetzt alle fehlerhaften ^ M durch Wagenrückläufe.
Dies ist als Funktion in MacVim, das auf gvim 7 basiert.
BEARBEITEN:
Dieses Problem tritt erneut auf meinem Windows 10-Computer auf, auf dem Ubuntu für Windows installiert ist, und ich denke, dies führt zu Dateiformatproblemen bei vim. In diesem Fall hat das Ändern von ff in Unix, Mac oder Dos nichts anderes getan, als das ^ M in ^ J und wieder zurück zu ändern.
Die Lösung in diesem Fall:
Der Grund, warum ich diesen Weg gegangen bin, ist, dass ich sicherstellen wollte, dass ich mit meiner Datei zerstörungsfrei bin. Ich hätte es tun können,
:%s/\r$//g
aber das hätte die Wagenrückläufe sofort gelöscht und hätte unerwartete Ergebnisse haben können. Stattdessen konvertieren wir das singuläre CR-Zeichen, hier ein ^ M-Zeichen, in ein Leerzeichen und entfernen dann alle Leerzeichen am Zeilenende (was für mich unabhängig davon ein wünschenswertes Ergebnis ist).Es tut mir leid, dass ich eine alte Frage wiederbelebt habe, die längst beantwortet wurde, aber es schien einige Verwirrung zu geben, und ich dachte, ich würde helfen, einiges davon zu klären, da dies bei Google-Suchen hoch auftaucht.
quelle
Keines davon hat bei mir funktioniert, also habe ich es versucht, was funktioniert hat:
Art
:%s/
Drücken Sie CTRL-VCTRL-M
Art
//g
Drücken Sie Enter
Der Gesamtbefehl in Vim sollte also so aussehen
:%s/^M//g
Was dies bewirkt:
:%s
(Suchen und Ersetzen)/^M/
(dieses Symbol)/
(ohne Zeichen)g
(global).quelle
^ M wird durch abgerufen Ctrl+ Vund M, so zu tun
quelle
Ohne Strg verwenden zu müssen:
:%s/\r$//
quelle
Einfache Sache, die für mich funktioniert hat
quelle
Ich habe das mit sed gemacht:
sed -i -e 's/\r/\n/g' filename
quelle
sed -e 's/\r/\n/g' <<< 'over and over'
->oven and oven
sed
aber nicht für BSDsed
(wie unter OSX). Jeder, der Zeilenumbrüche behebt, arbeitet wahrscheinlich mit einer Mischung von Betriebssystemen. Daher ist es hilfreich, klar zu machen, wann die Antwort funktionieren wird.Was ist mit nur:
:%s/\r//g
Das hat bei mir total funktioniert.Dies dient nur dazu, das Zeilenende aller Zeilen zu bereinigen, das ^ M zu entfernen und fertig.
quelle
Es gibt viele andere Antworten auf diese Frage, aber dennoch funktioniert Folgendes am besten für mich, da ich eine Befehlszeilenlösung benötigte:
Erläuterung:
myfile
:e ++ff=dos
, um ein erneutes Laden der gesamten Datei als Dos-Zeilenenden zu erzwingen.:w ++ff=unix
diese Option aus , um die Datei mit Unix-Zeilenenden zu schreibenquelle
Ctrl+ Mminimiert mein Fenster, Ctrl+ Enterfügt jedoch tatsächlich ein
^M
Zeichen ein. Ich musste auch darauf achten, den CtrlSchlüssel zwischen den Drücken nicht abzuheben .Die Lösung für mich war also:
Wo
<Ctrl-V><Ctrl-Enter>
Mittel zu drücken und gedrückt halten Ctrl , drücken und loslassen V, drücken und loslassen Enter, und dann Freigabe Ctrl .Wenn Sie an einer von Windows generierten Datei arbeiten
Die obige Lösung fügt eine zusätzliche Zeile zwischen vorhandenen Zeilen hinzu, da
\r
nach dem bereits eine unsichtbare vorhanden ist^M
.Um dies zu verhindern, möchten Sie die
^M
Zeichen löschen , ohne sie zu ersetzen.Wobei
%
"in diesem Puffer"s
"Ersatz"/
bedeutet, "das folgende Muster finden " bedeutet,<Ctrl-V><Ctrl-Enter>
sich auf die Tasten bezieht, die gedrückt werden müssen, um das^M
Zeichen zu erhalten (siehe oben),//
bedeutet "mit nichts" (oder "mit dem Muster") zwischen diesen beiden Schrägstrichen, die leer sind ") undg
ein Flag ist, das" global "bedeutet, im Gegensatz zum ersten Vorkommen in einer Zeile.quelle
Das hat bei mir funktioniert:
\n
Zeilenende)Also in vim:
quelle
In meinem Fall,
Nichts oben hat funktioniert, ich habe eine CSV-Datei von meinem Mac auf einen Linux-Computer kopieren lassen und alle oben genannten Befehle verwendet, aber nichts hat geholfen, außer dem folgenden
Ich hatte eine Datei, in der ^ M Zeichen zwischen Zeilen wie unten geschaltet waren
quelle
Alternativ gibt es Open-Source-Dienstprogramme namens dos2unix und unix2dos, die genau dies tun. Auf einem Linux-System sind sie wahrscheinlich standardmäßig installiert. Für ein Windows-System können Sie diese unter anderem von http://www.bastet.com/ herunterladen .
quelle
wobei ^ M durch gleichzeitiges Drücken der 3 Tasten eingegeben wird, ctrl + v + m
quelle
Verwenden Sie das Dienstprogramm dos2unix, wenn die Datei unter Windows erstellt wurde. Verwenden Sie das Dienstprogramm mac2unix, wenn die Datei unter Mac erstellt wurde. :) :)
quelle
Verwenden Sie einen dieser Befehle:
Oder
quelle
Das hat bei mir funktioniert:
quelle
Um Tastenanschläge zu speichern , können Sie die Eingabe von Ctrl+ VCtrl+ vermeiden, Mindem Sie diese in eine Zuordnung einfügen. Öffnen Sie einfach eine Datei mit einem ^ M-Zeichen, ziehen Sie sie heraus und fügen Sie sie in eine Zeile wie diese in Ihrer .vimrc ein:
quelle
Keiner dieser Vorschläge hat für mich funktioniert, da ich es geschafft habe,
^M
während der Arbeit mit vim und eclipse eine Menge Zeilenumbrüche zu bekommen . Ich vermute, dass ich auf einen externen Fall gestoßen bin, aber falls es jemandem hilft, den ich getan habe.Und es hat mein Problem gelöst
quelle
Wenn Sie mit
^M
eingebenShift+6 Caps+M
wird dies nicht akzeptiert.Sie müssen eingeben
ctrl+v ctrl+m
.quelle
^M
gibt unerwünschte Zeilenumbrüche. Um dies zu handhaben, können wir densed
Befehl wie folgt verwenden:quelle
Entfernen
set binary
Sie einfach in Ihrer .vimrc!quelle
Zur Nutzung
sed
auf MacOS, dies zu tun:Erläuterung: Die
$'STRING'
Syntax bezieht sich hier auf die Bash-Shell. Macs werden nicht\r
als Sonderzeichen behandelt . Indem Sie die Befehlszeichenfolge in angeben,$''
weisen Sie die Shell an, sie\r
durch das\r
im ANSI-C-Standard angegebene tatsächliche Zeichen zu ersetzen .quelle
"Diese Funktion behält die Liste der Sprünge bei
quelle
Ich habe einen Nachmittag damit verbracht, mit \ n Strg-V 012 zu kämpfen (beide liefern mir null). & arbeitete mich durch diesen Thread, bis ich Metagraphen erreichte.
\r
hat gut funktioniert für mich!drehte so etwas um:
in so etwas:
Magie. Ich bin zutiefst dankbar
quelle