ฉันต้องการดึงหลายบรรทัดใน register เดียวในกลุ่มเพื่อวางเทมเพลตข้อความต่าง ๆ ในเอกสารได้อย่างง่ายดาย
ตัวอย่างเช่น "iyy yanks เฉพาะบรรทัดปัจจุบันถ้าฉันพยายามเลือกหลายบรรทัดในโหมดภาพมันไม่ได้เขียนลงทะเบียน
ข้อเสนอแนะใด ๆ
ฉันต้องการดึงหลายบรรทัดใน register เดียวในกลุ่มเพื่อวางเทมเพลตข้อความต่าง ๆ ในเอกสารได้อย่างง่ายดาย
ตัวอย่างเช่น "iyy yanks เฉพาะบรรทัดปัจจุบันถ้าฉันพยายามเลือกหลายบรรทัดในโหมดภาพมันไม่ได้เขียนลงทะเบียน
ข้อเสนอแนะใด ๆ
คำตอบ:
ใช้3Y
เพื่อดึง 3 บรรทัดลงในการลงทะเบียนเริ่มต้น; "i3Y
สำหรับ yanking ลงทะเบียน i
นอกจากนี้วิธีที่ฉันชอบคือไม่นับบรรทัดที่ฉันต้องการดึง แต่เพื่อเลือกพวกเขาในโหมดภาพผ่านV
คำสั่งและย้ายแล้วกดy
เพื่อดึงมันหรือ"_y
ดึงลงทะเบียน
นอกจากนี้ฉันเพิ่งลองเลือกหลายบรรทัดในโหมด Visual Line และ yanking เป็นการลงทะเบียนที่ไม่ใช่ค่าเริ่มต้นเช่นVjjj"oy
- และใช้งานได้
V
เป็นโหมดv
ภาพจริงคือโหมดภาพ
%)
จากที่ใดก็ได้ภายในไฟล์คุณสามารถใช้สิ่งต่อไปนี้
:2,5y a
Yank lines 2 - 5. ลงทะเบียน a
:7pu a
วางลงทะเบียนใต้บรรทัด 7
ใช้m
เพื่อทำเครื่องหมายจุดเริ่มต้นพร้อมชื่อบัฟเฟอร์ (ดังนั้นคุณอาจพิมพ์mx
) เลื่อนเคอร์เซอร์ของคุณไปยังตำแหน่งที่คุณต้องการหยุดคัดลอกและพิมพ์y'x
(หรือd'x
ถ้าคุณกำลังตัดและวาง) p
จากนั้นย้ายไปยังจุดที่คุณต้องการวางและประเภท
v
ไม่m
?
คุณนำหน้าคำสั่งด้วยตัวเลขเพื่อรับจำนวนบรรทัดที่จะใช้งาน คุณสามารถใช้ 'text-object' (เช่น ']' สำหรับ block และ ')' สำหรับย่อหน้า) - สิ่งนี้จะทำงานในหลาย ๆ บริบทตามบริบท - ค่าเริ่มต้นมักจะเป็นบรรทัดเดียว ตัวอย่างเช่น"r5yy
จะดึงห้าบรรทัดเริ่มต้นที่เคอร์เซอร์ในการลงทะเบียน 'r' (หรือคุณสามารถพิมพ์:.,+4y r
เพื่อทำสิ่งเดียวกันในโหมด ex) คุณสามารถรวมตัวเลขกับวัตถุข้อความได้เช่นกัน "r10y)
.
เป็นไปได้ที่จะดึงหลายบรรทัดในกรณีที่เป็นการค้นหาครั้งล่าสุด
ตัวอย่างเช่นกำหนดรูปแบบที่ไม่ใช่ความโลภหลายบรรทัดต่อไปนี้:
/start\_.\{-}end/norm gn"iy
จากนั้นคุณจะมีรูปแบบหลายบรรทัดที่ถูกดึง (ระหว่างstart
และend
) ในการ@i
ลงทะเบียนของคุณ(พิมพ์โดยecho @i
)
ที่เกี่ยวข้อง: วิธีพิมพ์การจับคู่หลายบรรทัดได้อย่างไร ที่ Vi