it-swarm-eu.dev

Warum ist \ r eine neue Zeile für Vim?

Von Frage Wie ein Zeichen für eine neue Zeile in Vim ersetzen?. Sie müssen\r verwenden, wenn Sie wie folgt Text für eine neue Zeile ersetzen

:%s/%/\r/g

Wenn Sie jedoch Zeilenenden und Zeilenumbrüche für ein Zeichen ersetzen, können Sie dies folgendermaßen tun:

:%s/\n/%/g 

In welchem ​​Abschnitt des Handbuchs werden diese Verhaltensweisen dokumentiert, und was steckt dahinter?

243
Vinko Vrsalovic

Von vim docs on patterns :

\r entspricht <CR>

\n stimmt mit einem Zeilenende überein - Beim Abgleichen in einer Zeichenfolge anstelle von Puffertext wird ein literales Zeilenumbruchzeichen abgeglichen.

154
pjz

Von http://vim.wikia.com/wiki/Search_and_replace :

Bei der Suche

...

\n ist newline, \r ist CR (Wagenrücklauf = Ctrl-M = ^M)

Beim Ersetzen

...

\r ist newline, \n ist ein Null-Byte (0x00).

190

Ein weiterer Aspekt ist, dass \0, das traditionell NULL ist, wird in s//\0/ bedeutet "das gesamte übereinstimmende Muster". (Was übrigens überflüssig und länger ist als &).

  • Sie können also nicht \0 um NULL zu bedeuten, also verwenden Sie \n
  • Sie können also nicht \n meinen \n, also benutzt du \r.
  • Sie können also nicht \r meinen \r, aber ich weiß nicht, wer dieses Zeichen absichtlich hinzufügen möchte.

-

105
rking

:help NL-used-for-Nul

Technisches Detail:

<Nul> - Zeichen in der Datei werden als <NL> Im Speicher gespeichert. Im Display werden sie als "^@" Angezeigt. Die Übersetzung erfolgt beim Lesen und Schreiben von Dateien. Um ein <Nul> Mit einem Suchmuster abzugleichen, können Sie einfach STRG - @ oder " STRG-V 000" eingeben. Dies ist wahrscheinlich genau das, was Sie erwarten. Intern wird das Zeichen im Suchmuster durch ein <NL> Ersetzt. Was ungewöhnlich ist, ist, dass durch die Eingabe von STRG-VSTRG-J auch ein <NL> Eingefügt und somit auch nach einem <Nul> In der Datei gesucht wird . {Vi kann überhaupt nicht mit <Nul> - Zeichen in der Datei umgehen}


47

Öffnen Sie zunächst :h :s , um den Abschnitt "4.2 Ersatz" der Dokumentation zu "Ändern" zu lesen. Folgendes akzeptiert der Befehl:

:[range]s[ubstitute]/{pattern}/{string}/[flags] [count]

Beachten Sie die Beschreibung zu pattern und string

Für den {pattern} Siehe |pattern| .
{string} Kann eine wörtliche Zeichenfolge sein oder so
Besondere; siehe |sub-replace-special| .

Jetzt wissen Sie, dass das Suchmuster und das Ersetzungsmuster unterschiedlichen Regeln folgen. Wenn Sie dem Link zu |pattern| Folgen, gelangen Sie zu dem Abschnitt, in dem die gesamten in Vim verwendeten regulären Ausdrücke erläutert werden.

In der Zwischenzeit gelangen Sie mit |sub-replace-special| Zum Unterabschnitt "4.2 Substitute", der die Muster für die Substitution enthält, darunter \r Für Zeilenumbruch/-teilung.

(Die Verknüpfung zu diesem Teil des Handbuchs lautet :h :s% )

10
syockit