Inilah yang saya dapatkan dari dokumentasi: \zs
"memulai bagian yang disorot" setelah mencocokkan regex sebelumnya, dan \@<=
"memulai bagian yang disorot" setelah mencocokkan atom sebelumnya . Tapi saya tidak benar-benar memahami seluk-beluk ini, jadi adakah yang bisa menjelaskan bagaimana perbedaannya sedikit lebih dalam?
Inilah yang membuat saya penasaran: apakah saya lari
/\_s\zsnnoremap
yaitu pilih nnoremap
didahului oleh spasi atau garis awal (yaitu baris baru dari garis sebelumnya, maka \_
sebelumnya s
) dan kemudian jalankan gn
untuk masuk ke Mode Visual dan pilih secara visual pertandingan berikutnya, untuk beberapa alasan hanya kolom pertama (yaitu pertama n
masuk nnoremap
) dipilih - terlepas dari kenyataan bahwa seluruh nnoremap
kata disorot dengan :hlsearch
dihidupkan.
Namun, jika saya malah menjalankan pencarian
/\_s\@<=nnoremap
dan kemudian coba gn
, keseluruhannya nnoremap
dipilih dengan benar. Apa yang mungkin terjadi di sini? Apakah saya (berani saya katakan) menemukan beberapa bug yang tidak jelas?
:h patterns
tetapi ingatan saya menunjukkan bahwa regex terdiri dari atom, jika itu membantu menjelaskan perbedaannya.