Frage

Ich muss eine Liste von Wörtern durch eine ebenso lange Liste von Wörtern ersetzen.

So haben Sie zum Beispiel:„a“, „b“, „c“, „d“, „e“, „f“

Und Sie möchten jedes Wort durch die Großbuchstabenversion jedes Wortes ersetzen:„A“, „B“, „C“, „D“, „E“, „F“

Ich weiß, wie ich jede Zeichenfolge mithilfe des regulären Ausdrucks finden kann:(a\|b\|c\|d\|e\|f)

Ich weiß, dass Sie für jedes Wort eine globale Substitution vornehmen könnten.Aber wenn die Länge der Wörter zu groß wird, wird dieser Ansatz unhandlich und unelegant.

Gibt es eine Möglichkeit, irgendwie eine globale Substitution durchzuführen?Ähnlich zu:

:%s/\(a\|b\|c\|d\|e\|f\)/INSERT_REPLACEMENT_LIST/

Ich bin mir nicht sicher, ob das überhaupt möglich ist.

War es hilfreich?

Lösung

Sie können ein Wörterbuch der Elemente zu deren Ersatz abgebildet verwenden, dann verwenden, auf der rechten Seite der Suchen / Ersetzen.

:let r={'a':'A', 'b':'B', 'c':'C', 'd':'D', 'e':'E'}
:%s/\v(a|b|c|d|e)/\=r[submatch(1)]/g

Siehe :h sub-replace-\= und :h submatch(). Wenn Sie, dass in einer Zeile stopfen wollen, können Sie eine wörtliche Wörterbuch verwenden.

:%s/\v(a|b|c|d|e)/\={'a':'A','b':'B','c':'C','d':'D','e':'E'}[submatch(1)]/g

Das spezifische Beispiel Sie gaben Briefe von großgeschrieben einfacher als

erfolgen würde
:%s/[a-e]/\U\0/g

Andere Tipps

:%s/(a\|b\|c\|d\|e\|f)/\U\0/g

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top