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