Oto, co otrzymuję z dokumentacji: \zs
„rozpoczyna podświetloną część” po dopasowaniu poprzedniego wyrażenia regularnego, i \@<=
„rozpoczyna podświetloną część” po dopasowaniu poprzedniego atomu . Ale nie do końca rozumiem subtelności tego, więc czy ktokolwiek może wyjaśnić, czym różnią się nieco bardziej dogłębnie?
Właśnie to mnie zainteresowało: jeśli biegnę
/\_s\zsnnoremap
tzn. wybierz nnoremap
poprzedzony spacją lub początkiem linii (tj. nowa linia z poprzedniej linii, stąd \_
poprzednia s
), a następnie uruchom, gn
aby przejść do trybu wizualnego i wizualnie wybierz następne dopasowanie, z jakiegoś powodu tylko pierwszą kolumnę (tj. pierwsze n
w nnoremap
) jest zaznaczone - pomimo tego, że całe nnoremap
słowo jest podświetlone z :hlsearch
włączonym.
Jeśli jednak zamiast tego uruchomię wyszukiwanie
/\_s\@<=nnoremap
a następnie spróbuj gn
, całość nnoremap
jest odpowiednio wybrana. Co tu się dzieje? Czy (śmiem powiedzieć) odkryłem jakiś niejasny błąd?
:h patterns
ale moja pamięć sugeruje, że wyrażenia regularne składają się z atomów, jeśli to pomaga wyjaśnić różnicę.