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 nnoremappoprzedzony spacją lub początkiem linii (tj. nowa linia z poprzedniej linii, stąd \_poprzednia s), a następnie uruchom, gnaby przejść do trybu wizualnego i wizualnie wybierz następne dopasowanie, z jakiegoś powodu tylko pierwszą kolumnę (tj. pierwsze nw nnoremap) jest zaznaczone - pomimo tego, że całe nnoremapsłowo jest podświetlone z :hlsearchwłączonym.
Jeśli jednak zamiast tego uruchomię wyszukiwanie
/\_s\@<=nnoremap
a następnie spróbuj gn, całość nnoremapjest odpowiednio wybrana. Co tu się dzieje? Czy (śmiem powiedzieć) odkryłem jakiś niejasny błąd?
:h patternsale moja pamięć sugeruje, że wyrażenia regularne składają się z atomów, jeśli to pomaga wyjaśnić różnicę.