Terminal-Druckwagenrücklauf als ^ M ?? [Linux sagt mir, ich solle aufhören zu programmieren?]

2658
Patrick S

Ich schrieb ein Skript in vim, ließ meine Tastatur fallen und fuhr mit dem Programmieren fort.

Ich habe nicht bemerkt, dass sich mein Cursor vom normalen _-Typ-Cursor in einen [] -Block geändert hat. (als ob ich in einem Windows-Terminal auf "Einfügen" geklickt habe)
Ich habe mein Skript gestartet und bekam einen / bin / bash ^ M: Fehler beim Interpreter.

Mit viel googeln, ^ M ist der Wagenrücklauf .. aber wenn ich im Terminal die Eingabetaste drücke, sieht es aus wie ein normaler Wagenrücklauf. Aber bash interpretiert es als ^ M.

Ich habe praktisch mit der Tastatur zugeschlagen, um zu sehen, was auf der Erde ich getroffen habe, um das zu ändern. kann mir hier jemand helfen?

1
Nein, es wird nur gesagt, dass Sie zu Windows wechseln möchten. Daniel Beck vor 12 Jahren 0
zählt es nicht, dass es ein Gast in Windows 7 ist? = P Patrick S vor 12 Jahren 0
Sind Sie sicher, dass ein "Eingeben" in Ihrer VM eine CRLF einfügt? Sie können es mit: `cat> testcrlf && hexdump testcrlf` testen. Wenn diese Zeile im Terminal ausgeführt wird, drücken Sie die Eingabetaste gefolgt von Strg + D. In der rechten Spalte sollte nur "0a" angezeigt werden, nicht "0a0d". Lekensteyn vor 12 Jahren 0
sehen Sie dasselbe Verhalten auf dem Macbook Air. http://xkcd.com/979/ hayd vor 9 Jahren 0

2 Antworten auf die Frage

3
JdeBP

Wenn Sie Ihre Tastatur fallen gelassen haben, hat sie nicht nur die InsertTaste gedrückt, sondern auch den :set txBefehl eingegeben . Führen Sie den :set fileformat=unixBefehl im Bearbeitungspuffer für die betreffende Datei aus und speichern Sie dann den Puffer erneut.

0
Lekensteyn

Führen Sie Folgendes aus, um eine Datei mit CRLF-Zeilenabschlusszeichen in LF zu konvertieren:

sed 's/\r$//' -i your-script-filename 

Wenn es sich um ein Problem in vim (und nicht in Ihrem Terminal) handelt, sehen Sie sich gVim mit Carriage Return (^ M) an, auch wenn der Dateimodus explizit DOS ist

Keine Antwort Er möchte aufhören, CRLF zu schreiben, wenn er unter Linux die Return-Taste drückt. Daniel Beck vor 12 Jahren 0