2015-04-24 11 views
5

Według Tim Pope, możemy wykonać następujące czynności:Jak powtórzyć VIM przestrzennego z tagu HTML na trybie Visual

Finally, let's try out visual mode. 
Press a capital V (for linewise visual mode) followed by S<p class="important">. 

I masz ten

<p class="important"> 
    <em>Hello</em> world! 
</p> 

próbowałem i to działa. Ale jak mogę powtórzyć to polecenie w wielu innych blokach wizualnych ? Próbowałem ., ale nie działał.

Aktualizacja:

z tym tekstem:

foo 
foo 
foo 

Próbowałem to qqgvS<p class="important">q. To właściwie daje

<p class="important"> 
foo 
</p> 
foo 
foo 

Ale kiedy powtórzyć z tym @q (z kursorem na f literę drugiego rzędu) daje to:

<p> 
<p class="important"> 
foo 
</p> 
</p> 
foo 
foo 

Zamiast

<p class="important"> 
foo 
</p> 
<p class="important"> 
foo 
</p> 
foo 

Co właściwa droga to zrobić?

Odpowiedz

3

Nie można; Wtyczka repeat.vim obsługuje tylko powtarzanie z trybu normalnego. Napisałem elementu towarzyszącego: visualrepeat plugin, ale surround.vim nie obsługuje tego.

W przypadku wbudowanych poleceń można wykonać wizualną selekcję za pomocą gv:normal .<CR>, ale to też tutaj nie działa.

Jedyną dostępną opcją jest zapisanie makra, a następnie jego wykonanie przy każdej poprzedniej selekcji (przy użyciu gv).

+0

jak to zrobić z makro? – pdubois

+2

Zasadniczo, 'qqgvS

q'. Następnie wybierz linię (linie) i wyzwal przez ' @ q'. –

+0

Dzięki. Ale to nie działa. Zobacz moją aktualizację. – pdubois

3

Zwykle zrobić coś podobnego:

:'<,'>norm! yss<p> 

Jako alternatywę można nagrać makro i odtworzyć na każdej linii.