2015-04-24 13 views
5

Theo Tim Pope, chúng ta có thể làm như sau:Làm thế nào để lặp lại VIM vòm với thẻ HTML trên chế độ Visual

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

Và bạn có được điều này

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

tôi đã cố gắng và nó hoạt động. Nhưng làm cách nào tôi có thể lặp lại lệnh đó trên nhiều khối hình ảnh khác ? Tôi đã thử . nhưng không hoạt động.

Cập nhật:

Với văn bản này:

foo 
foo 
foo 

tôi đã cố gắng qqgvS<p class="important">q này. Nó cung cấp cho chính xác

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

Nhưng khi tôi lặp lại với @q này (với con trỏ trên f thư hàng thứ hai) nó mang lại cho này:

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

Thay vì

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

gì đúng cách để làm điều đó?

Trả lời

3

Bạn không thể; plugin repeat.vim chỉ xử lý sự lặp lại từ chế độ bình thường. Tôi đã viết một đồng hành visualrepeat plugin, nhưng surround.vim không hỗ trợ điều đó.

Đối với các lệnh tích hợp, bạn có thể thực thi trên lựa chọn trực quan qua gv:normal .<CR>, nhưng điều đó không hoạt động ở đây, cả hai.

Tùy chọn duy nhất tôi thấy là ghi macro và sau đó thực hiện điều đó trên mỗi lựa chọn trước đó (thông qua sử dụng gv).

+0

bạn làm điều đó bằng macro như thế nào? – pdubois

+2

Về cơ bản, 'qqgvS

q'. Sau đó, chọn (các) dòng và kích hoạt qua ' @ q'. –

+0

Cảm ơn. Nhưng điều đó dường như không hoạt động. Xem cập nhật của tôi. – pdubois

3

Tôi thường làm điều đó với một cái gì đó như:

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

Là một thay thế, bạn có thể ghi lại một macro và chơi nó trở lại trên mỗi dòng.

Các vấn đề liên quan