É 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 nnoremap
precedido 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 gn
para entrar no Modo Visual e selecione visualmente a próxima correspondência, por algum motivo, apenas a primeira coluna (ou seja, o primeiro n
em nnoremap
) é selecionado - apesar do fato de que toda a nnoremap
palavra é realçada com :hlsearch
ligado.
No entanto, se eu executar a pesquisa
/\_s\@<=nnoremap
e tente gn
, o todo nnoremap
está selecionado corretamente. O que poderia estar acontecendo aqui? Eu (ouso dizer) descobri algum bug obscuro?
:h patterns
mas minha memória sugere que os regexs são compostos de átomos, se isso ajudar a explicar a diferença.