为什么可视区域内的 vim 脚本更改不起作用?

为什么可视区域内的 vim 脚本更改不起作用?

说一个这样的网页:

...
<div class="block">
    <p>...</p>
    <p>...</p>
</div>
<p>...</p>
...

我尝试将 class="cls" 添加到 <div class="block"> 内的 <p> 中,因此我这样做了:

while search('div class="block"','W') > 0
    普通大桶    
    '<,'>s@<p>@<p class="cls">@gec
结束

但这并不像预期的那样工作:<div class="block"> 外面的那些 <p> 也发生了变化。在命令窗口中,这些行完全可以工作,为什么不把它们放在一起呢?

答案1

之后normal vat,视觉选择仍然存在,并且'<,'>标记仍然指向前一个。您需要结束视觉模式,如下所示:

:execute "normal! vat\<Esc>"

附言:你应该使用:noremap;它使映射不受重新映射和递归的影响。

相关内容