Це те, що я отримую з документації: \zs"запускає виділену частину" після відповідності попередньому регексу та \@<="запускає виділену частину" після відповідності попередньому атому . Але я точно не розумію тонкощів цього, тому хтось може пояснити, чим вони відрізняються трохи більше за глибиною?
Це мене викликало цікавість: якщо я біжу
/\_s\zsnnoremap
тобто виберіть nnoremapпередує пробіл або початковий рядок (тобто новий рядок із попереднього рядка, отже, і \_попередній s), а потім запустіть, gnщоб увійти у візуальний режим і візуально вибрати наступний збіг, чомусь лише перший стовпець (тобто перший nв nnoremap) обраний - незважаючи на те , що все nnoremapслово виділене з :hlsearchвключено.
Однак якщо я замість цього запускаю пошук
/\_s\@<=nnoremap
а потім спробуйте gn, весь nnoremapправильно обраний. Що тут може статися? Чи я (зважусь сказати) виявив якусь незрозумілу помилку?
:h patternsщо це є, але моя пам'ять говорить про те, що регулярні вирази складаються з атомів, якщо це допоможе пояснити різницю.