บอกว่าฉันอยู่ที่บรรทัดที่ 20 และฉันต้องการที่จะดึงสาย 4 ฉันจะทำอย่างไร
และในทำนองเดียวกันฉันจะดึงเส้นหนึ่งที่สัมพันธ์กับตำแหน่งเคอร์เซอร์ของฉันพูดว่าหนึ่งบรรทัด 3 เส้นขึ้นไปได้อย่างไร
บอกว่าฉันอยู่ที่บรรทัดที่ 20 และฉันต้องการที่จะดึงสาย 4 ฉันจะทำอย่างไร
และในทำนองเดียวกันฉันจะดึงเส้นหนึ่งที่สัมพันธ์กับตำแหน่งเคอร์เซอร์ของฉันพูดว่าหนึ่งบรรทัด 3 เส้นขึ้นไปได้อย่างไร
คำตอบ:
จาก:help :yank
:
:[range]y[ank] [x] Yank `[range]` lines [into register x].
ดังนั้นในการดึงบรรทัดที่ 4 เราจะพิมพ์:
:4yank
หมายเหตุคุณสามารถทำได้จากโหมดแทรกด้วย<C-o>
; สิ่งนี้ช่วยให้คุณสามารถรันคำสั่งเดียวได้หลังจากนั้นคุณจะกลับสู่โหมดแทรก ตัวอย่างเช่น:
<C-o>:4yank
แน่นอนคุณสามารถใช้ช่วงอื่น ๆ ได้เช่นกัน ตัวอย่างบางส่วน:
:1,3yank
:%yank
:.,$:yank
:.,+3yank
:-3,.yank
:-3yank
สิ่งที่มีประโยชน์ที่สุดที่ควรจดจำเกี่ยวกับช่วง:
:line1,line2command
มันอยู่ในรูปแบบของ.
คือบรรทัดปัจจุบัน (คุณสามารถละเว้นจุดในกรณีส่วนใหญ่:.,+3yank
และ:,+3yank
เหมือนกัน)+n
-n
ดู:help [range]
ข้อมูลเพิ่มเติม
:4yank
ด้วย:4y
นอกจากนี้ในการตอบ Carpetsmoker ของฉันควรจะชี้น่ากลัวและ:help :m
:help :t
หากคุณต้องการคัดลอกบรรทัดที่ 4 ไปทางด้านล่างบรรทัดปัจจุบันคุณสามารถทำได้:
:4t.
หรือถ้าคุณต้องการคัดลอกบรรทัดนั้นอยู่เหนือบรรทัดปัจจุบัน:
:4t-
นอกจากคำสั่ง ex-mode ที่คุณได้รับแล้วคุณสามารถทำสิ่งนั้นได้ในโหมดคำสั่งเช่นโดย: 4GY''
- ซึ่งหมายถึง: goto line 4 ( 4G
), yank line ( Y
), และกลับไปยังบรรทัดก่อนหน้า ( ''
)
คุณยังสามารถใช้เครื่องหมายกระโดด สำหรับคำถามที่สองของคุณเช่นโดย: mm3kY'm
- ซึ่งหมายถึง: set mark m ( mm
), ไปสามบรรทัดขึ้นไป ( 3k
), yank line ( Y
), กลับไปที่ mark m ( 'm
)
เพียงพิมพ์
:4y
ถึงเส้นแบ่ง 4
มันจะเข้าสู่การลงทะเบียนที่ไม่มีชื่อ จากนั้น (ตัวอย่าง) คุณสามารถใช้p
วางไว้ที่อื่น คุณยังสามารถใช้[n]p
เช่น 10p เพื่อวาง 10 ครั้ง
คุณสามารถใส่ลงทะเบียนชื่อเช่น "a" ด้วย
:4y a
4G"ayy
คำสั่งสุดท้ายควรอ่าน
คุณทำได้
:10y <Enter> (to copy the line 10)
p (paste line 10 where the cursor is)
การตั้งค่าหมายเลขสัมพันธ์ช่วยในการย้ายระหว่างบรรทัดของรหัสเช่นกัน
:set relativenumber
ตอนนี้คุณสามารถคัดลอกบรรทัดที่ 5 เหนือเคอร์เซอร์ด้วย:
:-5y <Enter>
:p (to paste)