2013-01-20 35 views
5

Tôi đang cố gắng xóa các từ khỏi một dòng nếu chúng chứa một chuỗi cụ thể. Dưới đây là một ví dụ về đoạn Phúc Âm:Xóa các từ đầy đủ chứa một chuỗi trong Vim

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

Tôi muốn loại bỏ bất cứ điều gì có chứa +test, để cho kết quả với:

host-a, host-b, host-d 

Tương tự như vậy, tôi cần phải áp dụng điều này trên một dòng theo từng dòng, không trên tất cả các dòng trong tệp. Nó sẽ được sử dụng trong một macro.

Tôi làm cách nào để thực hiện việc này?

+0

Bạn cũng muốn để loại bỏ các dấu phẩy? – fge

+0

Có. Như thể hiện trong ví dụ của tôi. – Jericon

Trả lời

4

Một cái gì đó như thế này, có thể?

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

Nó sẽ hỏi mỗi trận đấu nếu bạn muốn thay thế. Gợi ý: set hlsearch sẽ hiển thị cho bạn các kết quả phù hợp.

Nếu bạn cũng muốn loại bỏ các dấu phẩy, sau đó:

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

'-' là một giới hạn từ, vì vậy bạn sẽ phải tắt hoặc sử dụng một giải pháp khác –

+0

Ah, vâng, điều đó là đúng. Đã sửa. – fge

+0

Cái đầu tiên đang hoạt động, nhưng cái thứ hai thì không. Tôi cần phải loại bỏ các dấu phẩy nếu có (ví dụ, nếu mặt hàng đó không phải là hàng đầu tiên trong dòng). – Jericon

Các vấn đề liên quan