Questo è ciò che ottengo dalla documentazione: \zs
"avvia la parte evidenziata" dopo aver abbinato la regex precedente e \@<=
"avvia la parte evidenziata" dopo aver abbinato l' atomo precedente . Ma non capisco esattamente le sottigliezze di questo, quindi qualcuno può spiegare come differiscono un po 'più in profondità?
Questo è ciò che mi ha incuriosito: se corro
/\_s\zsnnoremap
cioè selezionare nnoremap
preceduto da uno spazio o un inizio di riga (ovvero la nuova riga dalla riga precedente, quindi la \_
precedente la s
) e quindi eseguire gn
per accedere alla modalità visiva e selezionare visivamente la corrispondenza successiva, per qualche motivo solo la prima colonna (cioè il primo n
in nnoremap
) è selezionato - nonostante il fatto che l'intera nnoremap
parola sia evidenziata con :hlsearch
attivata.
Tuttavia, se invece eseguo la ricerca
/\_s\@<=nnoremap
e quindi provare gn
, l'intero nnoremap
è selezionato correttamente. Cosa potrebbe succedere qui? Ho (osato dire) scoperto qualche insetto oscuro?
:h patterns
ma la mia memoria suggerisce che le regex sono composte da atomi, se ciò aiuta a spiegare la differenza.