Câu trả lời:
Nếu bạn muốn xóa toàn bộ từ và nếu mẫu của bạn hoàn tất, thì bạn muốn sử dụng biểu thức chính này:
:s/[0-9]\{3\}abc//g
Nó loại bỏ mọi bit bao gồm 3 chữ số theo sau abc
.
Nếu tất cả các từ bạn muốn xóa bao gồm ba chữ số theo sau là chuỗi ký tự "abc", bạn có thể đi với đề xuất của @ m4673r. Đối với một cách tiếp cận tổng quát hơn, tôi đề nghị thay thế:
:s/\<\S*abc\>//g
Thao tác này sẽ xóa bất kỳ từ nào (bất kể ký tự / độ dài) kết thúc bằng chuỗi ký tự "abc" ( 111abc
cũng như FOOBARabc
hoặc chỉ abc
).
Câu trả lời của Ansgar là hoàn toàn đúng.
Tôi sẽ giải thích các bộ phận của nó để biến nó thành một phương pháp hơn là một công thức bởi vì tôi nghĩ rằng các biểu thức thông thường bằng cách nào đó khó hiểu.
:s/\<\S*abc\>//g
là một lệnh thay thế vim.
Nó có nghĩa là "trong dòng hiện tại (sử dụng% s cho tất cả các dòng) thay thế các kết quả khớp của biểu thức chính quy \<\S*abc\>
(được phân cách bằng hai" / "s đầu tiên bằng văn bản chứa giữa hai" / "s cuối cùng, không có gì. kết thúc "g" là dành cho toàn cầu và có nghĩa là thay thế tất cả các trận đấu thay vì chỉ trận đấu đầu tiên.
Các biểu thức chính quy được đặt trong dấu ngoặc góc thoát \<
và \>
. Đây là các ranh giới từ , có nghĩa là biểu thức chính quy sẽ chỉ khớp với văn bản trong các từ đơn. Hãy nghĩ rằng vim sẽ phân chia văn bản thành các từ trước khi cố gắng khớp từng từ.
Chữ hoa S thoát là dành cho không gian trống. \s
(chữ thường) khớp với khoảng trắng (dấu cách và tab) trong khi \S
(chữ hoa) khớp với tất cả các chữ khác.
Do đó, \S*
có nghĩa là "các ký tự không phải khoảng trắng bằng 0 hoặc nhiều lần".
Phần abc
đơn giản chỉ phù hợp với chuỗi ký tự chính xác.
Đặt tất cả lại với nhau, biểu thức chính quy khớp với toàn bộ các từ được tạo thành từ bất kỳ chuỗi ký tự nào theo sau abc
, như mong muốn tối đa .
Do cách vim nghĩ về từ, nên bất kỳ chuỗi ký tự nào sẽ không chứa khoảng trắng và các ký tự khác là ranh giới từ. Các nhân vật khác danh sách phụ thuộc vào loại tập tin đang được chỉnh sửa và có thể được nhìn thấy gõ :set iskeyword
enter. Đây là thông tin được sử dụng để phân chia văn bản bằng từ ngữ.