Làm thế nào để thực hiện tìm kiếm vim tìm kiếm ngược cho tất cả các dòng có văn bản ngoài


18

với grep tôi có thể thực hiện một grep -v "tìm kiếm của tôi" để lấy tất cả các dòng với "tìm kiếm của tôi"

với sed tôi có thể sed '/ baz /! s / foo / bar / g' để tìm văn bản thay thế trên các dòng không có baz

Có cách nào để làm điều tương tự vim. Và có thể nhưng với cú pháp "s ///". Chỉ sử dụng cú pháp tìm kiếm "/".

Câu trả lời:


29
:g/pattern/

phù hợp với tất cả các dòng đã được tìm thấy.

:v/pattern/

làm ngược lại. Xem :h globalđể biết thêm chi tiết.

Bạn có thể sử dụng nó như thế này:

:v/pattern/norm Ipattern not found - <CR>

để thêm vào "mẫu không tìm thấy -" cho mọi dòng không có "mẫu" hoặc

:v/pattern/s/nrettap/pattern

để thay thế "nrettap" bằng "mẫu" trên mỗi dòng không có "mẫu".

Có ví dụ, có.


Tôi lol trên "nrettap".
ChúZeiv


1

Sử dụng lệnh: v Lệnh Chỉnh sửa Cách tiếp cận truyền thống để tìm các dòng không khớp với mẫu đang sử dụng lệnh : v :

:v/Warning/p

Một mẹo nhỏ khi làm việc với một tệp nhật ký lớn, nơi bạn muốn lọc ra càng nhiều dòng không liên quan càng tốt trước khi bạn bắt đầu tìm kiếm thực sự của mình là lưu tệp dưới tên tạm thời và xóa tất cả các dòng không khớp ở đó:

:sav junk.log
:v/warning/d

Bây giờ bạn đang chỉnh sửa một bản sao của tệp gốc của mình với tất cả các dòng không khớp với "cảnh báo" đã bị xóa và bạn có thể chỉnh sửa nó theo ý muốn.

Tham chiếu: https://vim.fandom.com/wiki/Search_for_lines_not_contained_potype_and_other_helpful_searches

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.