Das ist die beste Antwort für die Art und Weise, wie ich denke, aber es wäre in einer Tabelle schöner gewesen:
Warum ist \r ein Zeilenumbruch für Vim?
Also, Umformulierung:
Sie müssen Folgendes verwenden \r
um einen Zeilenvorschub zu verwenden (ASCII 0x0A
(der Unix-Newline) in einer Regex-Ersetzung, aber das ist eine Besonderheit der Ersetzung - normalerweise sollten Sie weiterhin erwarten, dass Sie \n
für Netzeinspeisung und \r
für Wagenrücklauf.
Das liegt daran, dass Vim die \n
in einer Ersetzung für das Zeichen NIL (ASCII 0x00
). Man hätte erwarten können, dass NIL \0
stattdessen, wodurch \n
für seine übliche Verwendung als Zeilenvorschub, aber \0
hat bereits eine Bedeutung in Regex-Ersetzungen, daher wurde es in \n
. Daher geht man weiter und verschiebt auch den Zeilenumbruch von \n
a \r
(was in einem Regex-Muster das Wagenrücklaufzeichen ist, ASCII 0x0D
).
Character | ASCII code | C representation | Regex match | Regex replacement
-------------------------+------------+------------------+-------------+------------------------
nil | 0x00 | \\0 | \\0 | \\n
line feed (Unix newline) | 0x0a | \\n | \\n | \\r
carriage return | 0x0d | \\r | \\r | <unknown>
NB: ^M
( Ctrl + V Ctrl + M unter Linux) fügt einen Zeilenumbruch ein, wenn es in einer Regex-Ersetzung verwendet wird, und nicht einen Wagenrücklauf, wie andere empfohlen haben (ich habe es gerade ausprobiert).
Beachten Sie auch, dass Vim das Zeilenvorschubzeichen übersetzt, wenn er in eine Datei speichert, basierend auf seinen Dateiformat-Einstellungen, und das könnte die Dinge verwirren.
2 Stimmen
Stack Overflow ist eine Website für Programmier- und Entwicklungsfragen. Diese Frage scheint nicht zum Thema zu gehören, da sie sich nicht auf Programmierung oder Entwicklung bezieht. Siehe Zu welchen Themen kann ich hier Fragen stellen? im Hilfe-Center. Vielleicht Super-Benutzer o Unix & Linux Stack Exchange wäre ein besserer Ort, um zu fragen.
9 Stimmen
@jww diese Frage ist 10 Jahre alt... scheint zu alt zu sein, um zu migrieren. Es gibt viele Fragen wie diese, zum Beispiel: stackoverflow.com/questions/10175812/
51 Stimmen
@jww vim ist ein Werkzeug, das üblicherweise von Programmierern verwendet wird, und Fragen zu Werkzeugen, die üblicherweise von Programmierern verwendet werden, sind ein Thema in Stapelüberlauf . Obwohl dies natürlich besser geeignet ist für Vi und Vim .