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