2014-05-16 11 views
5

Cho một chút html phổ biến nhưCut hoặc yank toàn bộ thẻ trong VIM

<div> 
    <p> 
    Mary had a <b>little</b> lamb. 
    </p> 
</div> 

Tôi muốn cắt toàn bộ (không phải là bên duy nhất) div để dán ở nơi khác. Tôi biết có những cách khác để thực hiện việc này như cắt một loạt các dòng, v.v., nhưng với tư cách là người dùng mới của VIM, tôi cần phải di chuyển các thẻ trong luồng công việc của mình và tôi chưa thấy một cách tuyệt vời để làm điều này .

+0

@JonathanLandrum Tôi đoán đó là vì anh ấy có các thẻ/văn bản khác trên cùng một dòng trước div. – ElGavilan

+0

Tìm thấy câu trả lời hữu ích về việc dán nhãn và dán ở đây: http://stackoverflow.com/questions/1218390/what-is-your-most-productive-shortcut-with-vim/1220118#1220118 –

+0

@JonathanLandrum đôi khi thẻ thực sự là lớn và tôi không thể thấy số dòng thực sự kết thúc vào. Thứ hai, tôi không thích đếm số lượt thích vượt quá 7 hoặc 8. Có lẽ tôi sẽ phát triển một ước tính tốt hơn khi thời gian trôi qua, nhưng ngay bây giờ tôi thực sự cần phải di chuyển xung quanh các thẻ như rất nhiều khối xây dựng. Nếu điều đó hợp lý. – iamnotsam

Trả lời

10

Với cusor của bạn trên thẻ div ngoài: dmộtt

d elete một vòng t ag

Sau đó dán nó với p nơi bạn cần nó.

+0

Điều này làm việc cho tôi, cảm ơn! Tôi thấy có rất nhiều cách để làm điều đó bao gồm cả đi vào chế độ trực quan (mà tôi cố gắng tránh khi có thể) nhưng điều này là rất trực tiếp cho trường hợp sử dụng của tôi. – iamnotsam

2

vatyp nên làm điều đó.

vat để chọn trực quan xung quanh tag con trỏ là trong

y để yank

p để dán. Chuyển đến vị trí bạn muốn dán và sử dụng p để dán.

4

Sử dụng đối tượng văn bản at để thực hiện trên toàn bộ thẻ và đối tượng văn bản it để hành động trên nội dung của thẻ.

Để hành động dựa trên các văn bản đối tượng hiện tại, lệnh của bạn sẽ giống như thế này:

operator + text-object 

Bạn có thể thêm một count trước khi văn bản đối tượng hành động count mức xung quanh văn bản các đối tượng:

operator + count + text-object 

Như vậy, với con trỏ trên dòng 1 và 5, bạn có thể sử dụng lệnh sau đây để yank toàn bộ <div>:

yat 

Với con trỏ vào dòng 2, 3 hoặc 4, lệnh trở thành:

y2at 

Với con trỏ bên trong <b>, lệnh trở thành:

y3at 

Điều đó nói rằng, tôi đề nghị bạn sử dụng chế độ trực quan thay vì đếm: nó trực quan hơn, an toàn hơn và có khả năng nhanh hơn. Chỉ cần lặp lại các văn bản đối tượng để mở rộng lựa chọn của bạn:

vatat 

thì:

y 

Xem :help motion.txt.

1

plugin xml http://github.com/othree/xml.vim rất tiện dụng để chỉnh sửa xml.

với plugin này, khi con trỏ của bạn trên <div>, nhấn <leader>D, sẽ xóa bao gồm <div> till </div>.

và nếu bạn nhấn <leader>d, sẽ chỉ loại bỏ các thẻ <div> and </div>, thay đổi văn bản của bạn vào:

<p> 
    Mary had a <b>little</b> lamb. 
    </p> 

có nhiều chức năng, bạn có thể muốn kiểm tra. không có plugin xml, bạn có thể nhấn dat

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