Đây là những gì tôi nhận được từ tài liệu: \zs"bắt đầu phần được tô sáng" sau khi khớp với biểu thức chính trước đó và \@<="bắt đầu phần được tô sáng" sau khi khớp với nguyên tử trước . Nhưng tôi không hiểu chính xác sự tinh tế của điều này, vậy ai có thể giải thích làm thế nào chúng khác nhau sâu hơn một chút không?
Đây là điều khiến tôi tò mò: nếu tôi chạy
/\_s\zsnnoremap
tức là chọn nnoremaptrước một khoảng trắng hoặc một dòng bắt đầu (tức là dòng mới từ dòng trước, do đó \_trước đó s) và sau đó chạy gnđể vào Chế độ trực quan và chọn trực quan trận đấu tiếp theo, vì một số lý do chỉ là cột đầu tiên (nghĩa là là người đầu tiên ntrong nnoremap) được chọn - bất chấp thực tế rằng toàn bộ nnoremaptừ được nhấn mạnh với :hlsearchbật.
Tuy nhiên, nếu tôi thay vì chạy tìm kiếm
/\_s\@<=nnoremap
và sau đó thử gn, toàn bộ nnoremapđược chọn đúng. Điều gì có thể xảy ra ở đây? Có phải tôi (dám nói) phát hiện ra một số lỗi tối nghĩa?
:h patternsnhưng bộ nhớ của tôi cho thấy rằng regex bao gồm các nguyên tử, nếu điều đó giúp giải thích sự khác biệt.