ทางลัด vi เพื่อลบ“ จนกระทั่งอักขระ X ถัดไป”


194

ฉันเข้าใจว่า vi มีปุ่มลัดเพื่อลบอักขระคำและบรรทัดที่มีตัวเลือกต่าง ๆ

อย่างไรก็ตามฉันไม่พบสิ่งนี้:

  • ลบจากเคอร์เซอร์ไปยังอักขระที่ระบุถัดไป

ตัวอย่างเช่นฉันอาจdu"คาดหวังว่าเครื่องมือแก้ไขจะ "ลบจนกว่า"จะพบอักขระถัดไป"

สิ่งที่ฉันรู้มากd9wที่สุด9คือจำนวนคำที่จะลบ

ไม่มีใครรู้ว่าสิ่งนี้เป็นไปได้?


หากคุณสนใจ Vi และ Vim พวกเขามีไซต์ SE ของตัวเองในขณะนี้: Vi และ Vim
ของหวาน

คำตอบ:


303

ใช้dtcโดยที่cคือตัวอักษรใด ๆ เช่นคุณต้องการdt"

นี้จะลบไม่เกิน แต่ไม่รวมถึงค

ถ้าคุณมี:

delete until exclamation point!

และเคอร์เซอร์อยู่ที่ช่องว่างแรกและคุณพิมพ์dt!คุณจะได้รับ:

delete!

dfcด้วย

นี้จะลบไม่เกินและรวมทั้งค

การใช้df!ตัวอย่างเดียวกันด้านบนจะทำให้คุณ:

delete

เพียงใดเกี่ยวกับ "การเคลื่อนไหว" สามารถนำมาใช้สำหรับd, c, yและคำสั่งที่คล้ายกัน


7
น่าจะเป็นช่วยในการจำสำหรับ "จนถึง"? คำตอบที่ดี
overthink

15
นอกจากนี้คุณยังสามารถลบอินสแตนซ์ก่อนหน้าของอักขระด้วยเวอร์ชันตัวพิมพ์ใหญ่ของคำสั่งการเคลื่อนไหว อาจจะมีประโยชน์มากสำหรับเครื่องหมายจุลภาค - และdT, dF,
joelostblom

3
วิธีนี้ใช้ไม่ได้กับหลายบรรทัด
0xcaff

3
สิ่งนี้สามารถทำได้ในช่วงของเส้นหรือไม่?
เรย์

2
สำหรับการทำบางสิ่งบางอย่างที่คล้ายกันในช่วงของสายการค้นหาที่ปกติ (ในขณะที่คำตอบของ zpletan) สามารถดำเนินการ: การค้นหาถึงd/word wordมันจะต้องตามด้วยการป้อน (เพื่อปิดการค้นหา)
Eric O Lebigot

59
  • หากต้องการลบไปข้างหน้าจนถึงประเภทอักขระ 'X' dtX

  • หากต้องการลบไปข้างหน้าผ่านประเภทอักขระ 'X' dfX

  • หากต้องการลบย้อนกลับไปยังประเภทอักขระ 'X' dTX

  • หากต้องการลบย้อนหลังผ่านประเภทอักขระ 'X' dFX


30

อินพุต dt # (ไม่ใช่คำสั่ง:, ใช้มันเหมือนการเคลื่อนไหวอย่าง G)

จะลบจากเคอร์เซอร์จนกว่าจะถึง แต่ไม่รวม # คุณสามารถแทนที่อักขระสำหรับ # ได้


2
นี่คือคำตอบที่ถูกต้อง! df # จะลบ # ด้วย
Viet

ถูกมองหาสิ่งนี้มันยอดเยี่ยมมาก
Nadeem Khedr

18

ดูเหมือนว่า @Arcege แล้วตอบคำถาม แต่ฉันไม่ได้d/lลบจนตัวอักษรที่l; ตัวละครอื่นก็ใช้ได้เช่นกัน


3
สิ่งนี้ใช้ได้กับสิ่งต่าง ๆ ในบรรทัดใหม่
jasonszhao

หมายเหตุ: สิ่งนี้จะต้องตามด้วย Enter
Eric O Lebigot

6

wย้ายไปที่คำต่อไปนี้ lย้ายไปยังตัวอักษรต่อไปนี้

ดังนั้นจึงd9lต้องลบอักขระ 9 ตัวถัดไป


2
ปิดlเป็นปุ่มลูกศรขวาของ Vim ดังนั้นคุณจึงถูกลบจริง ๆ ในทางกลับกันd9hจะลบอักขระ 9 ตัวที่เหลือ
Walf
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.