Antworten:
:%s/\n\(\(A\.$\)\@!.*\)/\1/
Ersetzen Sie einen Mustervergleich:
eine Gruppe mit
A.
direkt das Zeilenende folgtmit:
und das global.
:help \@!
Weitere Informationen zu diesem Teil finden Sie in Vim. Ansonsten ist es hoffentlich einfach mit meiner Erklärung. Ein Problem bei Ihrem Ansatz besteht darin, dass " A.
" im Text, wenn auch nicht als isolierte Markierungslinie, so aufgeteilt wird, als wäre es ursprünglich eine Markierung. In der Praxis ist dies möglicherweise kein Problem (ich weiß nicht, wie Ihre "echte" Datei aussieht), aber im Allgemeinen kann es zu unerwünschtem Verhalten führen, wenn man sich dessen nicht bewusst ist.
:%s///
Syntax nicht vertraut sind : Es handelt sich um eine "Search and Replace" -Syntax in Vim. :
Startet den Befehl, %
gibt den gesamten Puffer als Bereich an und s
startet eine Ersetzung. /
ist das Mustertrennzeichen (jedes andere Zeichen kann verwendet werden, ist aber /
"Standard"). Das erste /
startet das Suchmuster, das zweite das Ersetzungsmuster und das dritte beendet es. Nachfolgende Modifikatoren sind verfügbar, um die Groß- und Kleinschreibung nicht zu berücksichtigen usw. \1
repräsentiert die erfasste Gruppe im Suchmuster. :%s/foo/bar/
ersetzt foo
durch bar
in der Datei.
:%s/^A\.//
. Die Methode in der Antwort erfasst nicht die ^A\.
Muster selbst (sondern deren Abwesenheit), sodass diese Zeichenfolgen nicht auf offensichtliche Weise geändert werden können.
Dies funktioniert auch (wenn die erste Zeile mit beginnt A.
)
:v/^A/-1j!