Xóa văn bản ở giữa các thẻ HTML trong vim?


164

tôi biết

di<

sẽ tự xóa trong một thẻ HTML.

Có cách nào dễ dàng để xóa văn bản ở giữa hai thẻ không?

<span>How can I delete this text?</span>

Cảm ơn!

Câu trả lời:


321

ditsẽ xóa văn bản giữa các thẻ XML phù hợp. ( itdành cho "khối thẻ bên trong".)

Xem :h it:h tag-blocks.


30
Và, tất nhiên, citkhi bạn muốn viết ngay sau đó.
Debilski

6
Và plugin Surround ( vim.org/scripts/script.php?script_id=1697 ) thật tuyệt vời khi bạn muốn làm những việc như thay đổi thẻ xung quanh (cst) từ <p> thành <div>.
Kris Jenkins

4
Ngoài ra còn có dat (Xóa khối thẻ) bao gồm các thẻ thực tế. cit giống như dit nhưng vào chế độ chèn sau. con mèo giống như dat nhưng vào chế độ chèn sau. Đồng thời di "và di (để xóa trích dẫn kép bên trong và xóa dấu ngoặc đơn bên trong.
aiham

@KrisJenkins bạn có thể chỉ ra một ví dụ đầy đủ để đạt được điều đó không? Tôi chỉ có thể làm điều đó với dấu ngoặc kép / ngoặc.
FelikZ

1
Ngoài ra vat(hoặc vit), theo sau là lặp lại at(hoặc it) để chọn dần các thẻ xung quanh. (Hoặc v2at, v.v.). Sau đó dđể xóa (vv).
Joe Freeman

27
cit
ci"

Hai trong số các lệnh enabler năng suất tốt nhất của vim.

Tôi tiết kiệm rất nhiều thời gian và công sức chỉ với hai điều đó.


3
citđược đề cập trong chủ đề này, nhưng đối với hậu thế, ci"sẽ xóa đến lần "tìm thấy tiếp theo . tuyệt vời để thay đổi tên lớp trong các thẻ html, như <span id="really long annoying-id">- với con trỏ lúc đầu ", nhấn ci"và được thả vào để chèn các ký tự mới giữa các dấu ngoặc kép.
Alex Moore-Niemi

ciwcũng hữu ích vì nó xóa từ hiện tại; Tôi sử dụng nó nhiều hơn citci"thực sự.
John Sparwasser

2
@ AlexMoore-Niemi: ci"thực sự sẽ xóa văn bản sang trái cho đến trích dẫn tiếp theo và sang phải cho đến trích dẫn tiếp theo và sau đó vào chế độ chèn. ct"thực sự là lệnh "xóa đến" tìm thấy "tiếp theo. Nhưng đúng vậy, nó hoạt động tương tự nếu con trỏ nằm dưới trích dẫn bên trái.
schlimmchen

9

thử dt < trong khi con trỏ ở ký tự đầu tiên cần xóa. Trong ví dụ của bạn, 'H'.


Cũng rất hữu ích cho các tình huống khác, cảm ơn! (nghĩ rằng tôi nghĩ nó phải là "dt <")
CMB

1
Mặc dù điều này đúng về mặt kỹ thuật, nó yêu cầu điều hướng đến ký tự đầu tiên bạn muốn xóa thay vì chỉ nhảy bất cứ nơi nào vào dòng. Nhưng đúng là đúng. :-)
lyonsinbeta

4

( con trỏ trên ký tự đầu tiên cần xóa ) v / <[enter] d

Giải pháp này bắt đầu ở ký tự đầu tiên, sau đó vào chế độ trực quan ("v"). Sau đó, nó tìm kiếm khung bắt đầu tiếp theo ("/ <"), sau đó nhấn enter để thoát khỏi tìm kiếm.

Tại thời điểm này, lựa chọn trực quan của bạn sẽ bao gồm các văn bản để xóa. nhấn d ("d") để xóa nó.

Nếu tôi phải làm điều này cho một loạt các thẻ, tôi sẽ ghi lại lệnh và kết hợp nó với một số tìm kiếm khác để làm cho nó lặp lại. Chuỗi khóa có thể trông như thế này:

[ con trỏ khi bắt đầu tập tin ] qa /> [enter] lv / <[enter] dnq

sau đó nhấn:

20 @ a

để làm điều này trong 20 thẻ


Tôi đã từng sử dụng lệnh c/<[enter]rất nhiều, trong "cuộc sống Vim" của mình, nhưng bây giờ tôi hơi hối hận về điều đó. Bạn thấy, hầu hết các plugin "Vi-mode" cho các trình soạn thảo / IDE phổ biến khác không hỗ trợ loại lệnh cụ thể này. Họ hỗ trợ cit, ci", ct<và tuy nhiên. Vì vậy, tôi đang giảng dạy lại.
pilat

-1

Nếu bạn đang cố gắng thực hiện nghịch đảo xóa văn bản giữa các cờ, tôi khuyên bạn nên cài đặt Vim-Surround và chạy dstđể xóa thẻ vòm

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.