- หนึ่งลบคำทางซ้ายได้อย่างไร? กล่าวอีกนัยหนึ่งคือลบคำเมื่อเคอร์เซอร์อยู่ที่ส่วนท้ายของคำนั้น
- หนึ่งลบอักขระที่จุดเริ่มต้นของบรรทัดได้อย่างไร?
จะลบไปยังช่องว่างแรกทางซ้ายได้อย่างไร?
เทคนิคอื่น ๆ ที่เกี่ยวข้องกับการลบคำหรือไม่?
จะลบไปยังช่องว่างแรกทางซ้ายได้อย่างไร?
เทคนิคอื่น ๆ ที่เกี่ยวข้องกับการลบคำหรือไม่?
คำตอบ:
โดยทั่วไป d <motion> จะลบจากตำแหน่งปัจจุบันไปยังตำแหน่งสิ้นสุดหลังจาก <motion> ซึ่งหมายความว่า:
อ่านสิ่งนี้เพื่อเรียนรู้ทุกสิ่งที่คุณสามารถใช้ร่วมกับคำสั่ง 'd'
d<leftArrow>ทำdhแทนเนื่องจากhเป็นกุญแจสำคัญในการเลื่อนไปทางซ้าย
ฉันอยู่ในสถานการณ์นี้หลายครั้ง ฉันต้องการกำจัดช่องว่างทั้งหมดในบรรทัดที่ 10 ดังนั้นมันจะเข้าร่วมกับบรรทัดที่ 9 หลังเครื่องหมายจุลภาค

นี่คือการเข้าร่วมบรรทัดง่ายๆใน VIM
kJ เคล็ดลับไม่ (ดูด้านล่าง)

k= ขึ้น, J= เข้าร่วมบรรทัดด้านล่างกับบรรทัดปัจจุบันโดยเว้นวรรคระหว่าง คุณสามารถkgJเข้าร่วมได้โดยไม่ต้องเว้นวรรค gJ= เข้าร่วมบรรทัดด้านล่างโดยไม่มีช่องว่างระหว่าง ผ่าน cheatsheet: vim.rtorr.com
เพื่อตอบข้อ 3 diwและdawเป็นเลิศ
dbลบตัวอักษรที่อยู่หน้าตัวอักษรสุดท้าย แต่ยังคงทิ้งตัวอักษรสุดท้ายไว้
iและaกำลังทำอยู่ในตอนกลางของคำสั่งดังกล่าวหรือไม่ ฉันรู้ว่านำหน้าdคือ "ลบ" และฉันคิดว่าคำต่อท้ายwคือ "คำ"
:help text-objects. ย่อหน้านำหน้ามีความกระชับและฉันคิดว่าอธิบายได้ดีมาก
ในโหมดแทรก:
มิฉะนั้น:
ในโหมดคำสั่ง:
bdwกลับลบคำd^ (ไปยังช่องแรกที่ไม่ว่างเปล่า) d0 (เป็นอักขระตัวแรก)BdW (ไปที่ช่องว่างแรกลบไปยังช่องว่างถัดไป)(วิกิชุมชนอย่าลังเลที่จะแฮ็ค)
db (ถ้าเคอร์เซอร์อยู่หลังคำ) หรือ bdwd0 (หรือ d^ถ้าคุณต้องการลบเป็นอักขระแรกที่ไม่ว่างเปล่า)dEหรือdtSpaceเพื่อลบไปยังช่องว่างแรกหรือd/\sEnterลบไปยังอักขระช่องว่างถัดไปแก้ไข
เนื่องจากคำถามมีการเปลี่ยนแปลงดังนั้น 3 จึงถูกลบไปยังอักขระช่องว่างแรกทางด้านซ้ายคำตอบของฉันควรเปลี่ยนเป็น:
dBหรือdShiftTSpaceเพื่อลบกลับไปที่ช่องว่างแรกหรือd?\sEnterเพื่อลบไปยังอักขระช่องว่างก่อนหน้าดู:
:help motion.txt
:help WORD
bdwมาที่นี่มองหาสิ่งที่ต้องการ ตัวละครที่เหลือ (เดิมอยู่ใต้เคอร์เซอร์) ของdbฉันทำให้รำคาญ
ฉันรู้สึกว่าไม่มีคำตอบใดที่สมบูรณ์:
โดยทั่วไปแล้วคุณมักจะเริ่มต้นดำเนินการลบโดยใช้และไม่ค่อยใช้d<motion>x
หมายเหตุ: เมื่อ
Nไม่ได้ระบุจะทำงานราวกับว่าN=1(ลบถ่านตัวเดียว)
อักขระไม่ต่อเนื่อง:
<N>x - ลบ N ตัวอักษรทางด้านขวา
d<N><left-arrow> - ลบ N ตัวอักษรทางซ้าย
d<N><right-arrow> - ลบ N ตัวอักษรทางด้านขวา
ขอบเขตของคำ:
หมายเหตุ: คำที่นำหน้า / สำเร็จเป็นคำที่ 1 อยู่ใต้เคอร์เซอร์
d<N>b - ลบจากจุดเริ่มต้นของคำ N-th ที่นำหน้าไปยังตำแหน่งปัจจุบัน
d<N>e - ลบจากตำแหน่งปัจจุบันไปยังจุดสิ้นสุดของคำ N-th ที่ประสบความสำเร็จ
d<N>w- เหมือนกับd<N>eแต่รวมถึงช่องว่างต่อท้าย
diw - ลบทั้งคำใต้เคอร์เซอร์
daw- เหมือนกับdiwแต่รวมถึงช่องว่างต่อท้าย
ขอบเขตของเส้น:
d0 - ลบจากจุดเริ่มต้นของบรรทัดไปยังตำแหน่งปัจจุบัน
d^ - ลบจากอักขระที่ไม่ใช่ช่องว่างแรกไปยังตำแหน่งปัจจุบัน
d$ - ลบจากตำแหน่งปัจจุบันไปยังจุดสิ้นสุดของบรรทัด
/ <CR>x
(ค้นหาช่องว่างข้างหน้ากด Enter เพื่อไปที่นั่น x เพื่อลบ)
อาจมีวิธีที่วิเศษกว่านี้ แต่ฉันไม่รู้อย่างใดอย่างหนึ่ง
dbจำได้ยาก:5. dw or d<ctrl+rightarrow>และ6. db or d<ctrl+leftarrow>