É o que recebo da documentação: \zs"inicia a parte destacada" após corresponder ao regex anterior e \@<="inicia a parte destacada" após corresponder ao átomo anterior . Mas eu não entendo exatamente as sutilezas disso, então alguém pode explicar como elas diferem um pouco mais em profundidade?
Foi isso que me deixou curioso: se eu correr
/\_s\zsnnoremap
ou seja, selecione nnoremapprecedido por um espaço ou um início de linha (ou seja, a nova linha da linha anterior e, portanto, a \_anterior s) e depois corra gnpara entrar no Modo Visual e selecione visualmente a próxima correspondência, por algum motivo, apenas a primeira coluna (ou seja, o primeiro nem nnoremap) é selecionado - apesar do fato de que toda a nnoremappalavra é realçada com :hlsearchligado.
No entanto, se eu executar a pesquisa
/\_s\@<=nnoremap
e tente gn, o todo nnoremapestá selecionado corretamente. O que poderia estar acontecendo aqui? Eu (ouso dizer) descobri algum bug obscuro?
:h patternsmas minha memória sugere que os regexs são compostos de átomos, se isso ajudar a explicar a diferença.