Cách xóa văn bản khỏi vim


1

Tôi muốn xóa tất cả các từ kết thúc bằng abc

Thí dụ:

111abc 222def 333abc 444def 555abc 666def

Từ đây tôi muốn xóa tất cả các từ kết thúc bằng abc.

vì vậy tôi đã thử nó

: s / abc // g

Nhưng điều này sẽ chỉ thay thế abc

Làm thế nào để xóa tất cả các từ kết thúc bằng abc?

Câu trả lời:


4

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ó đang hiển thị E486: Không tìm thấy mẫu: [0-9] {3} abc
tối đa

Xấu của tôi, tôi quên thoát khỏi niềng răng xoăn. Đã chỉnh sửa.
m4573r

6

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" ( 111abccũng như FOOBARabchoặc chỉ abc).


1

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 \<\>. Đâ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ữ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.