Đâ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 nnoremap
trướ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 n
trong nnoremap
) được chọn - bất chấp thực tế rằng toàn bộ nnoremap
từ được nhấn mạnh với :hlsearch
bậ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 patterns
như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.