Ich habe eine Datei mit einer Reihe von Benutzervorgaben. Ich möchte einen Teil des Texts ändern, habe aber Probleme, einen Matcher und einen Ersatz zu finden. Mit dem folgenden Beispiel:
###############################################################################
# Trackpad, mouse, keyboard, Bluetooth accessories, and input #
###############################################################################
# Trackpad: enable tap to click for this user and for the login screen
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad Clicking -bool true
Ich möchte ersetzen # Trackpad: ...
mitrunning "Trackpad: ..."
Als ich das Problem aufschloss, kam ich mit einem Regex-Tester auf etwas:
/\n\n#\s(.*)/g
Wenn ich dies in Vim versuche und verwende, funktioniert es bei mir nicht:
:/\n\n#\s(.*)/running "\1"/g
Ich denke, mein Problem besteht aus zwei spezifischen Fragen:
- Wie kann ich vermeiden, nach
\n
Zeichen zu suchen , und stattdessen sicherstellen, dass#
sie nicht am Ende der Suchgruppe angezeigt werden? - Wie kann ich Erfassungsgruppen effektiv verwenden?
Im Folgenden finden Sie einige gute Antworten. Es ist schwierig, zwischen allen drei zu wählen, aber ich bin der Meinung, dass die gewählte Antwort für meine ursprüngliche Spezifikation am genauesten ist. Ich empfehle Ihnen, alle drei Antworten mit der aktuellen Datei zu versuchen, um zu sehen, wie Sie mit ihnen umgehen.
:%s/\v\n\n#\s+(.*)/^M^Mrunning "\1"/
(die "magische" Flagge hinzugefügt). Es ist wirklich schwierig, eine richtige Antwort für meine ursprüngliche Frage zu finden, aber ich bin der Meinung, dass diese Antwort meiner ursprünglich erwarteten Antwort am nächsten kommt. Es ist auch das einzige, das in der gesamten Datei funktioniert, ohne dass ein Bereich ausgewählt werden muss.