Вот что я получаю из документации: \zs«запускает выделенную часть» после сопоставления с предыдущим регулярным выражением и \@<=«запускает выделенную часть» после сопоставления с предыдущим атомом . Но я не совсем понимаю тонкости этого, так кто-нибудь может объяснить, как они отличаются немного глубже?
Это то, что заставило меня любопытно: если я бегу
/\_s\zsnnoremap
т. е. выберите nnoremapпредваряющий пробел или начало строки (т. е. новую строку из предыдущей строки, следовательно, \_предшествующей s) и затем запустите, gnчтобы войти в визуальный режим и визуально выбрать следующее совпадение, по какой-то причине только первый столбец (т. е. выбрано первое nв nnoremap) - несмотря на то, что все nnoremapслово выделено при :hlsearchвключенном.
Тем не менее, если я вместо этого запустить поиск
/\_s\@<=nnoremap
а затем попробуйте gn, все nnoremapправильно выбрано. Что здесь может происходить? Я (смею сказать) обнаружил какую-то неясную ошибку?
:h patternsно моя память предполагает, что регулярные выражения состоят из атомов, если это помогает объяснить разницу.