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 nnoremappreceduto da uno spazio o un inizio di riga (ovvero la nuova riga dalla riga precedente, quindi la \_precedente la s) e quindi eseguire gnper accedere alla modalità visiva e selezionare visivamente la corrispondenza successiva, per qualche motivo solo la prima colonna (cioè il primo nin nnoremap) è selezionato - nonostante il fatto che l'intera nnoremapparola sia evidenziata con :hlsearchattivata.
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 patternsma la mia memoria suggerisce che le regex sono composte da atomi, se ciò aiuta a spiegare la differenza.