มีวิธีที่รวดเร็วกว่าในการลบข้อความในบรรทัดกว่า
- กด0เพื่อข้ามไปยังจุดเริ่มต้นแล้ว
- กดd$เพื่อลบจนกว่าจะสิ้นสุดบรรทัดหรือไม่
นอกจากนี้จะเกิดอะไรขึ้นถ้าฉันต้องการลบทุกอย่างยกเว้นการเยื้อง มีวิธีทำเช่นนั้นหรือไม่?
มีวิธีที่รวดเร็วกว่าในการลบข้อความในบรรทัดกว่า
นอกจากนี้จะเกิดอะไรขึ้นถ้าฉันต้องการลบทุกอย่างยกเว้นการเยื้อง มีวิธีทำเช่นนั้นหรือไม่?
คำตอบ:
ดังที่คุณกล่าวว่ามีหลายวิธีและคุณยังสามารถคำนึงถึงสิ่งที่การกระทำต่อไปของคุณจะเป็นหลังจากที่คุณล้างหรือลบบรรทัดปัจจุบัน
ccหรือSจะทำงานเป็นทั้ง 4 หรือ 5 ถ้า 'autoindent' ปิดอยู่หรือเปิดตามลำดับ
ดังนั้นใช้สิ่งที่เหมาะกับการกระทำที่อยู่ในมือ ฉันเชื่อว่า0Dเป็นวิธีที่เร็วที่สุดในการล้างเส้น แต่คุณสามารถแมปสิ่งนั้นได้หากต้องการเพื่อทำให้เร็วขึ้น
อ๋อ หากมีสิ่งหนึ่งที่ฉันชอบเกี่ยวกับ Vim นั่นคือคำตอบของ "ฉันจะทำสิ่งนั้นได้หรือไม่" มักจะหนักแน่นใช่
0D ข้ามไปยังจุดเริ่มต้นจากนั้นลบผ่านจุดสิ้นสุดของบรรทัด
^D (ไม่ใช่ Ctrl + D) จะข้ามไปที่อักขระที่ไม่ใช่ช่องว่างตัวแรกจากนั้นลบไปจนจบ
(PS ฉันคิดออกตอนนี้และอยากจะแบ่งปันกับ noobs อื่น ๆ โปรดแจ้งให้เราทราบหากมีวิธีที่ดีกว่า)
ล้างบรรทัดที่มีหนึ่ง (เปลี่ยน) Sสำคัญ:
สิ่งนี้ยังคงเยื้อง
คุณเข้าสู่โหมดแทรกที่ตำแหน่งแรกหลังจากเยื้องหรือที่จุดเริ่มต้น - สิ่งที่คุณต้องการแทนที่บรรทัด - ดังนั้นชื่อS
- แทนเหมือน
:help S
["x]S Delete [count] lines [into register x] and start
insert. Synonym for "cc" |linewise|.
["x]cc Delete [count] lines [into register x] and start
insert |linewise|. If 'autoindent' is on, preserve
the indent of the first line.
S
เป็นกุญแจสำคัญที่ดี
ด้วยปลั๊กอิน" vim-textobj-line " ของ Kana คุณสามารถใช้การดำเนินการบนบรรทัดที่เยื้องกับil
(เช่นdil
) หรือทั้งบรรทัดโดยไม่ต้องขึ้นบรรทัดใหม่ด้วยal
(เช่นyal
) ข้อดีของวิธีการนี้คือบอบบาง: แทนที่จะต้องคิดทั้งการเคลื่อนไหว (เริ่มต้น, สิ้นสุด) สำหรับการทำงานที่ต้องการคุณระบุ text-object โดยตรง : i n l ine, a l ine
S
เป็นคำพ้องความหมายสำหรับcc