- หนึ่งลบคำทางซ้ายได้อย่างไร? กล่าวอีกนัยหนึ่งคือลบคำเมื่อเคอร์เซอร์อยู่ที่ส่วนท้ายของคำนั้น
- หนึ่งลบอักขระที่จุดเริ่มต้นของบรรทัดได้อย่างไร?
จะลบไปยังช่องว่างแรกทางซ้ายได้อย่างไร?
เทคนิคอื่น ๆ ที่เกี่ยวข้องกับการลบคำหรือไม่?
จะลบไปยังช่องว่างแรกทางซ้ายได้อย่างไร?
เทคนิคอื่น ๆ ที่เกี่ยวข้องกับการลบคำหรือไม่?
คำตอบ:
โดยทั่วไป 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
(ถ้าเคอร์เซอร์อยู่หลังคำ) หรือ bdw
d0
(หรือ 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>