pourquoi le script vim ne change-t-il pas dans la zone visuelle?

0

Dites une page Web comme celle-ci:

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

J'ai essayé d'ajouter class = "cls" à & lt; p & gt; s à l'intérieur de & lt; div class = "block" & gt ;, je l'ai donc fait:

while search('div class="block"','W') > 0
    normal vat    
    '<,'>s@<p>@<p class="cls">@gec
endw

mais cela ne fonctionnerait pas comme prévu: les & lt; p & gt; s situés en dehors de & lt; div class = "block" & gt; a changé aussi. Dans la fenêtre de commande, ces lignes fonctionnent totalement. Pourquoi ne pas les assembler?

avalan_che
la source

Réponses:

0

Après le normal vat, la sélection visuelle persiste et la '<,'> les marques font toujours référence à la précédente. Vous devez mettre fin au mode visuel, comme ceci:

:execute "normal! vat\<Esc>"

PS: Tu devrais utiliser :noremap; cela rend le mappage immunisé contre le remappage et la récursion.

Ingo Karkat
la source