วิธีการดึงบางบรรทัดโดยไม่ต้องเลื่อนเคอร์เซอร์เป็นกลุ่ม?


39

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

ข้อความแสดงแทน

ฉันจะดึงและวางบรรทัด 4 เฉพาะกับบรรทัด 12 โดยไม่ต้องเลื่อนเคอร์เซอร์ไปที่บรรทัด 4 ได้อย่างไร

ข้อความแสดงแทน


ฉันตอบคำถามของคุณตามความจริงที่ว่า "ดึงฉันไป!" อยู่ในบรรทัดที่ 4 ในสกรีนช็อตที่ 2 ของคุณจะปรากฏที่บรรทัดที่ 5
Louis Salin

ขอบคุณ @Louis สำหรับคำตอบ ฉันได้อัปเดตภาพหน้าจอแล้ว
Lazer

คำตอบ:


51

หากเคอร์เซอร์อยู่ในบรรทัดที่ 12 แล้วง่าย

: 4Y
P

ทำเพื่อฉัน


1
ดี! มีสิ่งที่เทียบเท่าxหรือไม่? เมื่อฉันพยายามที่ฉันได้รับ:4x E140: Use ! to write partial bufferขอบคุณ!
dotancohen

ฉันต้องบอกว่านี่เป็นเรื่องที่น่าอัศจรรย์: D
nXqd

@dotancohen:4d
n.st

มีวิธีที่ดีในการทำเช่นนี้กับหมายเลขบรรทัดสัมพันธ์หรือไม่
TrungDQ

ด้วยหมายเลขสัมพัทธ์เพียงแค่ใช้ + และ - ดังนั้น -4 คือสี่แถวเหนือเคอร์เซอร์และ +4 คือสี่แถวด้านล่าง
rickythefox

10

แล้วเคอร์เซอร์จะอยู่ที่บรรทัดที่ 11 คุณอยู่ในโหมด "vi"

:4co.<return>

เห็นได้ชัดว่าคุณสามารถทำได้ด้วยลวดลาย:

:/^Yank/co.<return>

คุณสามารถใช้ "mo" (ย้าย) แทน "co" (คัดลอก) เพื่อเพิ่งย้ายเส้นแทนที่จะเป็นงัดและวาง


1
ยิ่งสั้น ( tเป็นคำสั่งคัดลอกเป็นซ้ายจาก ed)::4t.
tarleb


8

ลอง:

:4co11

คุณสามารถใช้อาร์กิวเมนต์ของการวางสาย0 1สิ่งนี้จะทำงานกับช่วง:

:m,n co k

จะคัดลอกเส้นmผ่านไปยังเส้นn k+1นอกจากนี้มันไม่สำคัญว่าคุณจะอยู่ที่ไหนในบัฟเฟอร์ moveคำสั่งmทำงานในทำนองเดียวกัน


2

สิ่งนี้ควรทำ:

:4,12y
p
k

1
ไม่นั่นทำให้จำนวนบรรทัดเป็น 4 ถึง 12
Lazer

ฉันหมายถึงการคัดลอกและวางบรรทัดที่ 4 ไปที่บรรทัดที่ 12
Lazer

แก้ไข นี่คือสิ่งที่คุณต้องการ?
Umang

2

คนอื่น ๆ ได้กล่าวถึงวิธีที่ตรงที่สุดในการทำเช่นนี้:4yแล้ว แต่ฉันต้องการเพิ่มโน้ตสองอันเกี่ยวกับเรื่องนี้ซึ่งอาจเป็นประโยชน์:

หนึ่งถ้าคุณพิมพ์:help rangeคุณจะได้เรียนรู้เกี่ยวกับการใช้ช่วงเพื่อนำไปใช้กับคำสั่งสไตล์ Ex มีประโยชน์มากในหลายกรณีและหลากหลายกว่าการใช้หมายเลขบรรทัด ตัวอย่างเช่นถ้าคุณต้องการที่จะดึงเอาบรรทัดแรกเริ่มต้นด้วย "งัด" หลังจากที่เริ่มต้นของเอกสาร (แม้ว่าจะเป็นในบรรทัดแรก) :0/^yank/yการใช้ ส่วนที่ทรงพลังที่สุดของช่วงคือความสามารถในการรวมพวกมันเช่น:./^Chapter/+50?Pete?dหมายถึง "ค้นหาบรรทัดถัดไปเพื่อเริ่มต้นด้วยคำว่าบท (ค้นหาไปข้างหน้าจากบรรทัดปัจจุบัน) จากนั้นข้ามไปข้างหน้า 50 บรรทัดแล้วค้นหาย้อนหลังสำหรับคำว่าพีท และลบบรรทัดแรกที่คุณพบ " ยกเว้นว่ามันจะไม่ย้ายเคอร์เซอร์จริงๆมันแค่ทำในสิ่งที่คุณบอก

(ฉันใช้การกำหนดช่วงประเภทนี้เพื่อสร้างเอกสารที่เกี่ยวข้องกับการค้นหาชื่อฟังก์ชั่นใต้เคอร์เซอร์โดยอัตโนมัติจากนั้นค้นหาบรรทัดถัดไปซึ่งกล่าวว่า "คำอธิบาย" และส่งไปยังการลงทะเบียนที่ระบุ ... ฯลฯ )

เคล็ดลับอื่น ๆ คือคุณควรรู้เกี่ยวกับการกระโดด พิมพ์:help jump-motionsเพื่อเรียนรู้เกี่ยวกับสิ่งนี้อย่างสมบูรณ์ แต่วิธีที่เกี่ยวข้องคือคุณสามารถข้ามไปที่บรรทัดที่ 4 ดึงมันแล้วกลับมาใหม่ด้วย4Gyy''(หรือใช้ backticks แทน apostrophes เพื่อกระโดดกลับสู่ตำแหน่งเริ่มต้นที่แน่นอนแทนที่จะเป็นสายเดียวกัน คุณเริ่มต้นที่.)


2

ที่สั้นที่สุด:

:1t. คัดลอกบรรทัดแรกด้านล่างปัจจุบัน

ด้วยช่วง: :1,4t.คัดลอกบรรทัด 1 ถึง 4 (รวม) ด้านล่างปัจจุบัน

สามารถทำได้ด้วยหมายเลขบรรทัดสัมพัทธ์:

:-1t. คัดลอกบรรทัดก่อนหน้าด้านล่างปัจจุบัน

ในตัวอย่างของคุณ:4t-1จะคัดลอกบรรทัดที่สี่ด้านล่างบรรทัดที่ต้องการ

หมายเหตุ: :tเป็นคำพ้องความหมายสำหรับ:co[py]คำสั่ง

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