2013-01-20 8 views
5

Ich versuche, Wörter aus einer Zeile zu entfernen, wenn sie eine bestimmte Zeichenfolge enthalten. Hier ist ein Beispiel für den Text:Entfernen Sie ganze Wörter, die eine Zeichenfolge in Vim enthalten

host-a, host-b, host-c+test, host-d, host-e+test 

Ich möchte etwas entfernen, die +test enthält, führt mit:

host-a, host-b, host-d 

Ebenso, ich brauche diese für Zeile auf einer Linie anzuwenden, nicht auf allen Zeilen in der Datei. Es wird innerhalb eines Makros verwendet.

Wie kann ich das tun?

+0

Haben Sie auch das Komma entfernen? – fge

+0

Ja. Genau wie in meinem Beispiel gezeigt. – Jericon

Antwort

4

So etwas vielleicht?

:%s/\<[-a-z]\++test\>//gc 

Es wird nach jedem Spiel gefragt, wenn Sie es ersetzen möchten. Hinweis: set hlsearch zeigt Ihnen die Übereinstimmungen.

Wenn Sie auch das Komma entfernen, dann:

%s/\(,\s\+\)\?\S\++test\>//gc 
+0

'-' kann als Wortgrenze verwendet werden, also müssten Sie entweder das ausschalten oder eine andere Lösung verwenden. –

+0

Ah, ja, das stimmt. Fest. – fge

+0

Der erste funktioniert, der zweite nicht. Ich muss die Kommas entfernen, wenn sie vorhanden sind (dh wenn das Element nicht das erste in der Zeile ist). – Jericon