ฉันจะดึงหลายบรรทัดเข้าสู่การลงทะเบียนได้อย่างไร


43

ฉันต้องการดึงหลายบรรทัดใน register เดียวในกลุ่มเพื่อวางเทมเพลตข้อความต่าง ๆ ในเอกสารได้อย่างง่ายดาย

ตัวอย่างเช่น "iyy yanks เฉพาะบรรทัดปัจจุบันถ้าฉันพยายามเลือกหลายบรรทัดในโหมดภาพมันไม่ได้เขียนลงทะเบียน

ข้อเสนอแนะใด ๆ


"ถ้าฉันพยายามเลือกหลายบรรทัดในโหมดแสดงภาพมันจะไม่ถูกเขียนลงทะเบียน" <- จริงเหรอ? ทำงานให้ฉัน ...
Billy ONeal

และสำหรับฉันเช่นกัน ...
ulidtko

อ่าฉันได้ลองกับ "iyv, silly me. ควร Vjjj" iy เหมือน ulidtko ที่กล่าวถึง
ryz

คำตอบ:


58

ใช้3Yเพื่อดึง 3 บรรทัดลงในการลงทะเบียนเริ่มต้น; "i3Yสำหรับ yanking ลงทะเบียน i

นอกจากนี้วิธีที่ฉันชอบคือไม่นับบรรทัดที่ฉันต้องการดึง แต่เพื่อเลือกพวกเขาในโหมดภาพผ่านVคำสั่งและย้ายแล้วกดyเพื่อดึงมันหรือ"_yดึงลงทะเบียน

นอกจากนี้ฉันเพิ่งลองเลือกหลายบรรทัดในโหมด Visual Line และ yanking เป็นการลงทะเบียนที่ไม่ใช่ค่าเริ่มต้นเช่นVjjj"oy- และใช้งานได้


1
+1 - แต่Vเป็นโหมดvภาพจริงคือโหมดภาพ
Billy ONeal

ตกลงตกลงถูกต้อง โหมดเส้นสายตา %)
ulidtko

1
ยินดีรับมันวิธีที่เร็วที่สุดสำหรับฉันเลย
ryz

24

จากที่ใดก็ได้ภายในไฟล์คุณสามารถใช้สิ่งต่อไปนี้

:2,5y a

Yank lines 2 - 5. ลงทะเบียน a

:7pu a

วางลงทะเบียนใต้บรรทัด 7


1
คำถามที่ถามว่า“ ฉันจะดึงหลาย ๆ สายเข้าสู่การลงทะเบียนได้อย่างไร” โปรดแสดงให้เห็นว่าคำสั่งเหล่านี้ทำงานอย่างไรกับการลงทะเบียน
Scott

ฉันหวังว่าการแก้ไขของฉันจะตอบสนองคำขอของคุณ
alock27

ขอโทษค่ะ คำถามที่กล่าวถึงอย่างชัดเจน "ลงทะเบียน" ซ้ำ ๆ เรียกว่า "วางเทมเพลตข้อความที่แตกต่างกัน" และให้ตัวอย่างโดยใช้การลงทะเบียนที่ไม่ใช่ค่าเริ่มต้น
สกอตต์

3
@Scott คำขอโทษของฉัน ทำไมคุณไม่พูดว่า "เพื่อนลองดูวิธีการของคุณด้วย: reg คุณจะเห็นว่ามันใช้งานไม่ได้" และฉันก็คงจะเป็นเหมือน "โอ้โหไม่ดี"
alock27

1
กำลังมองหาวิธีที่จะดึงไฟล์ที่ลงทะเบียน + สำหรับการคัดลอกไปยังคลิปบอร์ดของระบบ :% y + ทำอุบายขอบคุณ
AlexMA

10

ใช้mเพื่อทำเครื่องหมายจุดเริ่มต้นพร้อมชื่อบัฟเฟอร์ (ดังนั้นคุณอาจพิมพ์mx) เลื่อนเคอร์เซอร์ของคุณไปยังตำแหน่งที่คุณต้องการหยุดคัดลอกและพิมพ์y'x(หรือd'xถ้าคุณกำลังตัดและวาง) pจากนั้นย้ายไปยังจุดที่คุณต้องการวางและประเภท

คำสั่งที่เป็นกลุ่มโกงแผ่น


คุณแน่ใจหรือไม่ได้หมายถึงvไม่m?
Billy ONeal

@BillyONeal 'v' เริ่มโหมดภาพและอนุญาตให้คุณทำสิ่งเดียวกัน 'm' ใช้สำหรับ "ทำเครื่องหมาย" ภูมิภาค
Nifle

6

คุณนำหน้าคำสั่งด้วยตัวเลขเพื่อรับจำนวนบรรทัดที่จะใช้งาน คุณสามารถใช้ 'text-object' (เช่น ']' สำหรับ block และ ')' สำหรับย่อหน้า) - สิ่งนี้จะทำงานในหลาย ๆ บริบทตามบริบท - ค่าเริ่มต้นมักจะเป็นบรรทัดเดียว ตัวอย่างเช่น"r5yyจะดึงห้าบรรทัดเริ่มต้นที่เคอร์เซอร์ในการลงทะเบียน 'r' (หรือคุณสามารถพิมพ์:.,+4y rเพื่อทำสิ่งเดียวกันในโหมด ex) คุณสามารถรวมตัวเลขกับวัตถุข้อความได้เช่นกัน "r10y).


1

เป็นไปได้ที่จะดึงหลายบรรทัดในกรณีที่เป็นการค้นหาครั้งล่าสุด

ตัวอย่างเช่นกำหนดรูปแบบที่ไม่ใช่ความโลภหลายบรรทัดต่อไปนี้:

/start\_.\{-}end/norm gn"iy

จากนั้นคุณจะมีรูปแบบหลายบรรทัดที่ถูกดึง (ระหว่างstartและend) ในการ@iลงทะเบียนของคุณ(พิมพ์โดยecho @i)

ที่เกี่ยวข้อง: วิธีพิมพ์การจับคู่หลายบรรทัดได้อย่างไร ที่ Vi

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.