Frage

Ich muss Folgendes ersetzen:

CREATE TABLE /*!32312 IF NOT EXISTS*/ `access`

zu

CREATE TABLE IF NOT EXISTS `access`

ich habe es versucht

:%s/\/\*\!\d+(.*)\*\//\1/g

Aber das schien nicht zu gehen. Was mache ich falsch?

War es hilfreich?

Lösung

VIM benötigt einen Backslashing + (oder verwenden Sie stattdessen *). Außerdem müssen Sie die Gruppierung von Klammern in Vim zurückbiegen. Daher:

:%s/\/\*\!\d\+\(.*\)\*\//\1/g

Ja, Vims Old-Stil-Regexes saugen:/

Bearbeiten: Wie in den Kommentaren unten erwähnt, funktioniert +, wenn sie als + entkommen. Und d tatsächlich wird unterstützt, oops. Bearbeitet das Beispiel Regex, um dies zu korrigieren. Siehe auch Brian Carpers Beispiel für eine prägnantere und lesbare Version.

Andere Tipps

Verwenden Sie "sehr magisch" und verwenden Sie andere Abgrenzer als die Standardeinstellung, um dies zu erleichtern (und erinnern Sie sich).

:%s@\v/\*!\d+(.*)\*/@\1@g

Ohne "sehr magisch" muss man einen Backslash vorstellen + und () (aber nicht vor * oder einige andere Dinge). Es ist nicht sehr konsequent.

Etwas anders und effizienter mit [^*]+ :-)

1,$s/\v\/\*\!\d+\s*([^*]+)\*\//\1
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top