ในกลุ่มฉันจะคัดลอกจากหลายบรรทัดได้อย่างไร (ไม่ใช่ช่วง);


20

สมมติว่าฉันมี

1 - funct1
2- funct 2
3 - funct 3 
4 line 4

ฉันจะคัดลอกบรรทัดที่ 1 และ 3 ได้อย่างไร (ไม่ใช่ช่วงของเส้น) และวางตัวอย่างเช่นที่บรรทัดที่ 8 ถ้าฉันทำสิ่งนี้ในทางที่มี|arg like ( 1y|3y) ฉันจะดึงเส้นไปยังหลายรีจิสเตอร์ใช่ไหม? แต่ฉันจะเพิ่มการลงทะเบียนหลายครั้งพร้อมกันได้อย่างไร

คำตอบ:


33

คุณสามารถผนวกการลงทะเบียนแทนการลบโดยใช้ตัวอักษรพิมพ์ใหญ่แทนตัวพิมพ์เล็ก

ตัวอย่างเช่น:

:1y a      # copy line 1 into register a (erases it beforehand)
:3y A      # copy line 3 into register a (after its current content)
8G  # go to line 8
"ap        # print register a

1
"ayyjj"Ayy"apนอกจากนี้คุณยังสามารถทำเช่นนี้ในโหมดปกติด้วย
wchargin

5
(หรือ1G"ayy3G"Ayy8G"apสำหรับหมายเลขบรรทัดที่ชัดเจน)
wchargin

1
ไม่ใช่แค่Gเพื่อเข้าแถว<C-G>ใช่ไหม?
เดวิด

1
มันเจ๋งมาก คุณสามารถเพิ่มหลาย ๆ อย่างเพื่อบัฟเฟอร์Aตามที่คุณต้องการและมันจะเก็บมันไว้ทั้งหมด เพื่อเริ่มต้นใหม่ใส่อะไรลงทะเบียนa
CornSmith

1
@CornSmith Nitpick: bufferเป็นคำที่เฉพาะเจาะจงมากในบริบทของกลุ่ม "aเป็นทะเบียน
Doorknob

1

คุณสามารถใช้:copyคำสั่งซึ่งสามารถย่อเป็น:t:

:1t8
:3t8

หากคุณต้องการคัดลอกช่วงของบรรทัด (เช่นทุกบรรทัดจาก 1 ถึง 3) คุณสามารถทำสิ่งนี้ได้:

:1,3t8

ฉันต้องการคัดลอกบรรทัดตามหมายเลข แต่ไม่ใช่ช่วงของเส้น ... ฉันสามารถใช้คำสั่ง t ต่อท้ายบรรทัดได้หรือไม่
Whats Myname

0
1Gyy7Gp #use 7 if you wish to paste the line at 8
3Gyy8Gp #use 8 if you wish to paste the line at 9

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