Esto es lo que obtengo de la documentación: \zs
"comienza la parte resaltada" después de hacer coincidir la expresión regular anterior, y \@<=
"comienza la parte resaltada" después de hacer coincidir el átomo anterior . Pero no entiendo exactamente las sutilezas de esto, entonces, ¿alguien puede explicar cómo difieren un poco más en profundidad?
Esto es lo que me hizo sentir curiosidad: si corro
/\_s\zsnnoremap
es decir, seleccione nnoremap
precedido por un espacio o un inicio de línea (es decir, la nueva línea desde la línea anterior, de ahí la \_
anterior s
) y luego ejecute gn
para ingresar al Modo Visual y seleccione visualmente la siguiente coincidencia, por alguna razón solo la primera columna (es decir la primera n
en nnoremap
) se selecciona - a pesar del hecho de que toda la nnoremap
palabra se destacó con el :hlsearch
encendido.
Sin embargo, si en su lugar ejecuto la búsqueda
/\_s\@<=nnoremap
e intente gn
, todo nnoremap
está correctamente seleccionado. ¿Qué podría estar pasando aquí? ¿Descubrí (me atrevo a decir) algún error oscuro?
:h patterns
pero mi memoria sugiere que las expresiones regulares están compuestas de átomos, si eso ayuda a explicar la diferencia.