ฉันได้พยายามทำตามสิ่งต่อไปนี้:
วิธีลบข้อความที่เลือกในตัวแก้ไข VI
แต่
5dd
จะช่วยให้
E492: ไม่ใช่คำสั่งเอดิเตอร์: 5dd
ฉันลองแล้ว:
5d
ซึ่งจะลบเพียงบรรทัดเดียว ฉันจะลบหลายบรรทัดได้อย่างไร?
ฉันได้พยายามทำตามสิ่งต่อไปนี้:
วิธีลบข้อความที่เลือกในตัวแก้ไข VI
แต่
5dd
จะช่วยให้
E492: ไม่ใช่คำสั่งเอดิเตอร์: 5dd
ฉันลองแล้ว:
5d
ซึ่งจะลบเพียงบรรทัดเดียว ฉันจะลบหลายบรรทัดได้อย่างไร?
คำตอบ:
ดูเหมือนว่าคุณกำลังป้อนคำสั่งในโหมดคำสั่ง (เรียกอีกอย่างว่า "โหมด Ex") ในบริบท:5dนั้นจะลบบรรทัดหมายเลข 5 ไม่มีอะไรอื่น สำหรับ5ddการทำงานตามที่ตั้งใจไว้ - ที่เอาห้าเส้นที่เกิดขึ้นเริ่มต้นที่เคอร์เซอร์ - :ใส่มันในโหมดปกติและไม่ได้คำนำหน้าคำสั่งด้วย
หาง่ายกว่านี้
/superuser/170795/how-can-i-select-and-delete-lines-of-text-in-vi
คุณสามารถลบหลายบรรทัด (ช่วง) ได้หากคุณทราบหมายเลขบรรทัด:
:[start_line_no],[end_line_no]d
หมายเหตุ: d ย่อมาจาก delete
โดยที่
start_line_no คือบรรทัดเริ่มต้นที่คุณไม่ต้องการลบและ end_line_no คือบรรทัดสิ้นสุดที่คุณไม่ต้องการลบ เส้นระหว่างจุดเริ่มต้นและจุดสิ้นสุดรวมถึงจุดเริ่มต้นและจุดสิ้นสุดจะถูกลบออก
เช่น:
:45,101d
บรรทัดระหว่าง 45 ถึง 101 รวมถึง 45 และ 101 จะถูกลบ
$เพื่อแสดงบรรทัดสุดท้ายในไฟล์ได้เช่นกัน ดังนั้น:45,$dจะลบทุกบรรทัดตั้งแต่ 45 จนจบ
/<\/div>/
:.,[end_line_no]d
คำสั่งที่แสดงรายการสำหรับใช้ในโหมดปกติ (คำนำหน้า:สำหรับโหมดคำสั่ง)
ผ่านการทดสอบใน Vim
ตามจำนวนบรรทัด:
ตามหมายเลขบรรทัด:
Backwards range given, OK to swap (y/n)?หากคุณชอบวิธีการใช้โหมดที่ไม่ใช่ภาพและรับทราบหมายเลขบรรทัดฉันขอแนะนำวิธีที่ตรงไปตรงมาให้คุณ
ตัวอย่าง
ฉันต้องการลบข้อความจากบรรทัดที่ 45 ถึงบรรทัดที่ 101
วิธีของฉันแนะนำให้คุณพิมพ์คำสั่งด้านล่างในโหมดคำสั่ง:
45Gd101G
มันอ่าน:
ไปที่บรรทัด 45 (
45G) จากนั้นลบข้อความ (d) จากบรรทัดปัจจุบันไปยังบรรทัด 101 (101G)
โปรดทราบว่าvimคุณอาจใช้ggแทนG.
เปรียบเทียบกับคำตอบของ @Bonnie Varghese ซึ่งก็คือ:
:45,101d[enter]
คำสั่งด้านบนจากคำตอบของเขาต้องพิมพ์ 9 ครั้งenterโดยที่คำตอบของฉันต้องพิมพ์ 8-10 ครั้ง ดังนั้นความเร็วของวิธีการของฉันจึงเปรียบได้
โดยส่วนตัวแล้วฉันชอบ45Gd101Gมากกว่า:45,101dเพราะฉันชอบที่จะยึดติดกับไวยากรณ์ของคำสั่งของ vi ในกรณีนี้คือ:
+---------+----------+--------------------+
| syntax | <motion> | <operator><motion> |
+---------+----------+--------------------+
| command | 45G | d101G |
+---------+----------+--------------------+
d5d "ตัด" ห้าบรรทัด
ฉันมักจะโยนตัวเลขไว้ตรงกลางเช่น:
d7l = ลบ 7 ตัวอักษร
กดEscปุ่มเพื่อให้แน่ใจว่าคุณไม่ได้อยู่ในโหมดแก้ไข วางเคอร์เซอร์บนบรรทัดแรกที่จะลบ :5ddเข้าสู่ บรรทัดปัจจุบันและสี่บรรทัดถัดไปควรถูกลบ
อีกวิธีหนึ่งหากคุณเปิดการกำหนดหมายเลขบรรทัด ...
กดEscปุ่มเพื่อให้แน่ใจว่าคุณไม่ได้อยู่ในโหมดแก้ไข ป้อน:#,#dตำแหน่งที่ '#' หมายถึงหมายเลขบรรทัดเริ่มต้นและสิ้นสุดที่จะลบ
พิมพ์ (สำหรับเส้นที่มีตัวเลข):set number
หากคุณต้องการลบช่วงหลังจากทริกเกอร์บรรทัดเฉพาะคุณสามารถใช้สิ่งนี้ได้
:g/^TMPDIR/ :.,+11d
ที่ลบ 11 เส้น (รวม) ^TMPDIRหลังจากที่พบของทุก
มันคือ dxd ไม่ใช่ ddx
หากคุณต้องการลบ 5 บรรทัดให้เคอร์เซอร์ไปที่จุดเริ่มต้นของบรรทัดแรกเพื่อลบและ d5d
ในการลบบรรทัดทั้งหมดให้ใช้ - ESC gg dG หากต้องการลบไม่กี่บรรทัดให้พูดว่า 5 จากนั้นใช้ ESC 5dd
สามารถทำได้ดังต่อไปนี้ ..