Nehmen wir an, ich habe die folgende sehr einfache Datei
a
b
c
d
e
und ich habe beschlossen, dass ich nach jeder Zeile leere Zeilen hinzufügen möchte. Mir fallen sofort verschiedene Methoden ein. Wir könnten es einfach tun (und somit das Scheitern annehmen). Wir könnten ein Makro wie aufnehmen qqo<ESC>jqund es mehrmals wiederholen.
Zwei andere Methoden schienen mir damals offensichtlicher.
Erstens dachte ich, ich würde den :normBefehl oin jeder Zeile ausgeben . Also renne ich :%norm o. Was aber tatsächlich passiert, ist, dass wir 5 Leerzeilen erhalten, gefolgt von den nicht getrennten Zeilen wie oben. Ich interpretiere dies so, dass %normvim das Nachrichtenproblem tatsächlich mit dem folgenden normalen Befehl in den ersten fünf Zeilen dieser fünfzeiligen Datei aufgreift . Der oBefehl erstellt eine neue Zeile und vim ist "dumm" in dem Sinne, dass es nach Zeilennummer und nicht nach einer anderen Kennung verweist.
Nun, ich war verlegen. Sicher. Ich habe ein paar andere Dinge versucht, um zu sehen, ob ich die obige Methode zum Laufen bringen kann, aber leider konnte ich nicht. Aus Neugier habe ich meine andere Lieblingsmethode zum Auftragen von Massen ausprobiert. Dies veranlasste mich, es zu versuchen :g/^/norm o. Zu meiner Überraschung funktioniert das ganz gut! Meiner Meinung nach scheint vim hier nicht so "dumm" zu sein wie oben und verweist auf Zeilen nicht nur durch die Zeilennummer.
Was genau ist los?
:%s/$/\r/oder so ::%s/\n/\r\r/. Das Mitnehmen ist, dass Zeilenumbrüche abgeglichen werden können\n, aber wie\rin Ersatzwerten geschrieben werden müssen.