这是我从文档中得到的结果:\zs
匹配前面的正则表达式后\@<=
“启动突出显示的部分”,而匹配前面的原子后“启动突出显示的部分” 。但是我不完全理解这一点的微妙之处,所以谁能解释他们在深度上有何不同?
这就是让我感到好奇的原因:如果我跑步
/\_s\zsnnoremap
即选择nnoremap
由空格或一个开始的行之前(即,从前述线路换行,因此\_
之前的s
),然后运行gn
到进入的视觉模式和直观地选择下一个匹配,由于某种原因,仅在第一列(即第一n
中nnoremap
)选择-尽管事实上,整个nnoremap
字凸显与:hlsearch
开启。
但是,如果我改为运行搜索
/\_s\@<=nnoremap
然后尝试gn
,nnoremap
正确选择了整个。这可能是怎么回事?我(敢说)发现了一些晦涩的错误吗?
:h patterns
但我的记忆表明,正则表达式由原子组成,如果这有助于解释差异。