ลบข้อความระหว่างแท็ก HTML ในกลุ่ม?


164

ฉันรู้ว่า

di<

จะลบในแท็ก HTML

มีวิธีง่าย ๆ ในการลบข้อความระหว่างสองแท็กหรือไม่

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

ขอบคุณ!

คำตอบ:


321

ditจะลบข้อความระหว่างแท็ก XML ที่ตรงกัน ( itสำหรับ "บล็อกแท็กด้านใน")

ดูและ:h it:h tag-blocks


30
และแน่นอนcitเมื่อคุณต้องการเขียนทันทีหลังจากนั้น
Debilski

6
และปลั๊กอิน Surround ( vim.org/scripts/script.php?script_id=1697 ) ยอดเยี่ยมเมื่อคุณต้องการทำสิ่งต่าง ๆ เช่นเปลี่ยนแท็กโดยรอบ (cst) จาก <p> เป็น <div>
Kris Jenkins

4
นอกจากนี้ยังมี dat (Delete A Tag block) ซึ่งมีแท็กจริง cit ซึ่งเป็นเหมือน dit แต่เข้าสู่โหมดแทรกหลังจาก แมวซึ่งเป็นเหมือน dat แต่เข้าสู่โหมดแทรกหลังจาก นอกจากนี้ di "และ di (สำหรับการลบเครื่องหมายคำพูดคู่ด้านในและลบวงเล็บภายในตามลำดับ)
aiham

@KrisJenkins คุณสามารถแสดงตัวอย่างทั้งหมดเพื่อให้บรรลุถึงสิ่งนั้นได้อย่างไร ฉันสามารถทำได้ด้วยคำพูด / วงเล็บ
FelikZ

1
นอกจากนี้vat(หรือvit) แล้วตามด้วยซ้ำat(หรือit) เพื่อเลือกแท็กรอบ ๆ อย่างต่อเนื่อง (หรือv2atอื่น ๆ ) จากนั้นdให้ลบ (ฯลฯ )
Joe Freeman

27
cit
ci"

สองสิ่งที่ดีที่สุดในการเพิ่มประสิทธิภาพให้กับคำสั่งของ vim

ฉันประหยัดเวลาและความพยายามเป็นอย่างมากด้วยสองสิ่งนี้


3
citครอบคลุมในหัวข้อนี้ แต่สำหรับคนรุ่นหลังci"จะลบรายการที่"พบถัดไป ยอดเยี่ยมสำหรับการเปลี่ยนชื่อคลาสในแท็ก html เช่น<span id="really long annoying-id">- พร้อมเคอร์เซอร์ในตอนแรก"กดci"และถูกแทรกลงในอักขระใหม่ระหว่างเครื่องหมายคำพูด
Alex Moore-Niemi

ciwยังมีประโยชน์เนื่องจากลบคำปัจจุบัน ฉันใช้มันมากกว่าcitและตาม ci"จริง
John Sparwasser

2
@ AlexMoore-Niemi: ci"จริง ๆ แล้วจะลบข้อความไปทางซ้ายจนกระทั่งเครื่องหมายคำพูดถัดไปและไปทางขวาจนกระทั่งเครื่องหมายคำพูดถัดไปจากนั้นเข้าสู่โหมดแทรก ct"จริง ๆ แล้วเป็นคำสั่งให้ "ลบไปถึงถัดไป" พบ "แต่ใช่มันจะทำงานเหมือนกันถ้าเคอร์เซอร์อยู่ภายใต้ใบเสนอราคาด้านซ้าย
schlimmchen

9

ลองdt <ในขณะที่เคอร์เซอร์อยู่บนอักขระตัวแรกที่จะลบ ในตัวอย่างของคุณ 'H'


มีประโยชน์มากสำหรับสถานการณ์อื่น ๆ ขอบคุณ! (คิดว่าฉันคิดว่าควรเป็น "dt <")
CMB

1
แม้ว่านี่จะเป็นความจริงทางเทคนิค แต่ก็ต้องมีการนำทางไปยังตัวอักษรแรกที่คุณต้องการลบแทนที่จะกระโดดไปที่ใดก็ได้ในบรรทัด แต่ความจริงเป็นเรื่องจริง :-)
lyonsinbeta

4

( เคอร์เซอร์บนอักขระแรกเพื่อลบ ) v / <[Enter] d

วิธีนี้เริ่มจากตัวอักษรตัวแรกจากนั้นเข้าสู่โหมดภาพ ("v") จากนั้นค้นหาวงเล็บเหลี่ยมเริ่มต้นถัดไป ("/ <") จากนั้นกด Enter เพื่อออกจากการค้นหา

ณ จุดนี้การเลือกภาพของคุณจะครอบคลุมข้อความที่จะลบ กด d ("d") เพื่อลบ

หากฉันต้องทำสิ่งนี้เพื่อหาแท็กจำนวนมากฉันจะบันทึกคำสั่งและรวมกับการค้นหาอื่น ๆ เพื่อให้สามารถทำซ้ำได้ ลำดับสำคัญอาจมีลักษณะเช่นนี้:

[ เคอร์เซอร์เมื่อเริ่มต้นไฟล์ ] qa /> [Enter] lv / <[enter] dnq

จากนั้นกด:

20 @

การทำเช่นนี้สำหรับ 20 แท็ก


ฉันเคยใช้คำสั่งอย่างc/<[enter]มากใน "ชีวิต Vim" ของฉัน แต่ตอนนี้ฉันเสียใจเล็กน้อยเกี่ยวกับเรื่องนี้ คุณเห็นปลั๊กอิน "Vi-mode" ส่วนใหญ่สำหรับบรรณาธิการ / IDE ยอดนิยมอื่น ๆ ไม่สนับสนุนคำสั่งประเภทนี้โดยเฉพาะ พวกเขาสนับสนุนcit, ci", ct<และอย่างไร ดังนั้นฉันจะสอนอีกครั้ง
pilat

-1

หากคุณต้องการที่จะทำสิ่งที่ตรงกันข้ามกับการลบข้อความระหว่างการตั้งค่าสถานะฉันขอแนะนำให้ติดตั้งVim-Surroundและการทำงานdstที่ลบแท็กเซอร์ราวด์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.