Một cách tiếp cận khác tùy thuộc vào trường hợp sử dụng của bạn sẽ là sử dụng vimgrep và kết quả của nó là quickfix . Bạn có thể làm như sau:
:vimgrep pattern %
sẽ tìm kiếm tệp hiện tại và đưa bạn đến kết quả tìm kiếm đầu tiên. Quan trọng hơn nó cũng đưa các kết quả vào "danh sách sửa nhanh".
:copen
sau đó sẽ mở danh sách Quickfix trong một cửa sổ Quickfix riêng biệt. Vì vậy, bạn sẽ có một cửa sổ riêng biệt với tất cả các dòng từ vimgrep cuối cùng của bạn. Trong cửa sổ Quickfix, sau đó, bạn có thể nhấn Enter hoặc nhấp đúp vào một dòng để chuyển đến dòng tương ứng trong tệp gốc của bạn.
:colder
sẽ cho phép bạn quay lại danh sách quickfix cũ hơn (kết quả vimgrep cũ hơn). Và :cnewer
chuyển tiếp đến các kết quả tìm kiếm mới hơn.
Lưu ý rằng danh sách Quickfix cũng được cập nhật khi chạy :make
(đó là lý do tại sao nó được gọi là quickfix để sửa lỗi). Bởi vì điều này cũng có một thay đổi cho danh sách tiền tố nhanh được gọi là "danh sách vị trí". Để sử dụng nó thay vào đó bạn sử dụng :lvimgrep
, sau đó sử dụng lệnh l-tiền tố chứ không phải là lệnh c-tiền tố - :lopen
, :lolder
, :lnewer
.
Tất nhiên, bạn có thể làm được nhiều hơn thế. Xem :help quickfix
để biết thêm thông tin.
Tái bút, Bạn đã nói rằng bạn không muốn một cách tiếp cận xóa các dòng và sau đó hoàn tác chúng. Nhưng vì bạn đã đánh dấu g/ERROR
là câu trả lời, tôi nghĩ tôi sẽ chỉ ra một cách nhanh chóng và bẩn thỉu là phải làm g!/ERROR/d
. Sau đó, bạn có thể dễ dàng hoàn tác bằng cách sử dụng u
. Ngoài FYI, bạn có thể làm :set hlsearch
để đánh dấu các mẫu phù hợp với :g
các lệnh.