2012-12-22 17 views
10

Gibt es eine Methode zum gleichzeitigen Vergleichen mehrerer Wörter in einem vim Suchen und Ersetzen? Etwas wie:Match foo oder bar vim regex

:%s/foo|bar//g 

für foo oder bar zum Suchen und Ersetzen mit nichts (das sucht nach dem Muster foo|bar, das nicht das, was ich will).

abcdef 
:%s/[ace]//g 

Ergebnisse in:: Ich kann Zeichen auf diese Weise für mehrere Such

bdf 

Kann ich die gleiche Sache mit Worten zu tun?

Ich bin auch bewusst, dass ich dies wie folgt tun könnte:

:%s/foo//g 
:%s/bar//g 

Ich bin für eine einzeilige Lösung suchen, wenn es so etwas gibt.

Antwort

18

In Vim Regexes muss der Alternationsoperator mit einem Backslash versehen werden: Verwenden Sie foo\|bar.

9

Statt | mit einem Backslash zu entkommen, können Sie Vims verwenden "very magic" mode mit der \v Sequenz:

:%s/\vfoo|bar//g