Vim

2013-01-20 21 views
5

içinde bir dize içeren sözcüklerin tamamını kaldırın Belirli bir dize içeriyorsa, sözcükleri satırdan kaldırmaya çalışıyorum.Vim

host-a, host-b, host-d 

Aynı şekilde, ben, çizgi temelinde bir satırda bu değil uygulamak gerekir:

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

Birlikte sonuçlanması, +test içeren bir şey kaldırmak istiyorum: Burada metnin bir örnektir dosyadaki tüm satırlarda. Makro içinde kullanılacak.

Bunu nasıl yapabilirim?

+0

da virgül kaldırmak istiyor musunuz? – fge

+0

Evet. Örneğimde olduğu gibi. – Jericon

cevap

4

Böyle bir şey, belki?

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

Eğer değiştirmek isterseniz, her maç için soracaktır. İpucu: set hlsearch size eşleşmeleri gösterecektir.

ayrıca sonra virgül, kaldırmak isterseniz:

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

'-', bir sözcük sınırı olarak kullanılır, bu yüzden bunu kapatmak veya başka bir çözüm kullanmak zorunda kalırsınız –

+0

Ah, evet, bu doğrudur. Sabit. – fge

+0

Birincisi çalışıyor, ama ikincisi değil. Varsa virgülleri kaldırmam gerekiyor (yani, satırdaki ilk öğe değilse). – Jericon