xóa các dòng khớp với một mẫu từ một dòng nhất định đến cuối tệp


9

Nếu tôi có một tệp có nhiều bình luận trong đó và tôi muốn xóa tất cả các bình luận từ nói, dòng 3 đến cuối tệp, cách tốt nhất để làm điều đó là gì?

Tôi bị mắc kẹt, vì những gì lần đầu tiên tôi thử dường như không thực hiện được những gì tôi muốn:

:3,$/^#/d

Thay vì tìm kiếm mẫu và xóa các dòng trong phạm vi từ 3 đến cuối tệp, nó sẽ xóa tất cả các dòng từ 3 đến qua một dòng khớp với mẫu và sau đó dừng lại.

Vậy làm thế nào để tôi áp dụng một lệnh ex cho một loạt các dòng. Trong trường hợp này, đến cuối tập tin, nhưng nó sẽ khác nếu tôi thực hiện nó đến một dấu, hoặc giữa các dòng 10 và 20 hoặc các phạm vi khác?

Câu trả lời:


14

Sử dụng :globallệnh cho điều đó:

:3,$g/^#/d

Bạn có thể áp dụng nó cho các dòng không khớp với một mẫu:

:3,$g!/^#/d

Bạn có thể sử dụng cơ chế toàn dải với nó (xem :help :range):

:.,/#define/+3g/^#/d

Và bạn có thể sử dụng nó với bất kỳ lệnh nào:

:3,$g/^#/s/foo/bar/g

Đây là một trong những lệnh mạnh nhất trong Vim, vui lòng xem :help :globalđể biết chi tiết.


Bạn cũng có thể sử dụng :3,$v/foo/dcho các dòng không khớp với mẫu. :h vglobal
vappolinario
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.