วิธีเพิ่มบรรทัดลงใน vim register โดยไม่ต้องเขียนทับ


85

ฉันต้องการดึงบรรทัดในการลงทะเบียน"{register}yแต่ไม่มีการเขียนทับสิ่งที่เคยอยู่ในทะเบียน ฉันมักจะต้องคัดลอกบรรทัดที่ไม่ติดกันในรีจิสเตอร์และฉันต้องการใช้บางครั้งรีจิสเตอร์เหมือนสแต็ก

ตัวอย่าง:

line1
line2
line3

ฉันต้องการคัดลอกline1โดยวางเคอร์เซอร์ไว้แล้วป้อน"ayจากนั้นline3ทำ"ayต่อไป จากนั้นเมื่อฉันจะทำ"apทั้งสองline1และline3จะถูกวาง

เป็นไปได้โดยไม่ใช้ปลั๊กอินหรือไม่? ด้วยปลั๊กอิน?


เหมาะสำหรับการสร้างรายการคำจำกัดความอย่างรวดเร็วที่ด้านบนของไฟล์
Joe McGrath

คำตอบ:


133

หากคุณต้องการผนวกเข้ากับการลงทะเบียนที่มีชื่อให้ใช้อักขระตัวพิมพ์ใหญ่ เช่นในตัวอย่างของคุณ:

"เอ๊ย
"อ๊าย
"อ

11
มีวิธีใดบ้างที่เป็นไปได้ในการต่อท้ายทะเบียนที่ไม่มีชื่อ? (ตัวหลัก)
Zaffy


เพื่อช่วยคนเยี่ยมชมเพจ ^^ IMO มันง่ายกว่าที่จะใช้ทะเบียนชื่อ เมื่อคุณพิมพ์ "a think" โดยใช้ register a ... "A" ต่อท้ายเพื่อลงทะเบียน a "
Rob Kielty

12

เพียงเพื่อขยายการตอบสนองของ MarkB คุณรู้หรือไม่ว่าคุณสามารถใช้เครื่องหมายเพื่อเลือกกลุ่มข้อความสำหรับการดึงของคุณได้

ไปที่บรรทัดแรกของบล็อกที่คุณต้องการดึงและป้อนคำสั่ง mark หลังจากเลือกตัวอักษรเป็นเครื่องหมายเช่น

ma  (entered in command mode, i.e. no colon)

จากนั้นไปที่ด้านล่างของบล็อกที่คุณต้องการดึงและป้อนคำสั่ง:

:'a,.ya A

คำสั่งนี้หมายถึงนำบล็อกข้อความจากบรรทัดที่มีเครื่องหมายของฉันที่เรียกว่า a ถึงบรรทัดปัจจุบันและดึงเข้าไปในบัฟเฟอร์ a ใช้กฎเดียวกับที่ MarkB กล่าวถึงใช้ชื่อบัฟเฟอร์ตัวพิมพ์เล็กเพื่อเขียนทับบัฟเฟอร์ ใช้ชื่อบัฟเฟอร์ตัวพิมพ์ใหญ่เพื่อต่อท้ายบัฟเฟอร์ ดังนั้นในกรณีนี้สิ่งนี้จะต่อท้ายเนื้อหาของบัฟเฟอร์ a

หมายเหตุ 'a' ที่ใช้สำหรับเครื่องหมายของคุณไม่มีส่วนเกี่ยวข้องกับ 'a' ที่ใช้ในการเลือกทะเบียนของคุณ (AFAIK แต่ YMMV)

BTW 'a (เครื่องหมายวรรคตอน a) หมายถึงบรรทัดที่มีเครื่องหมายก. `a (backquote a) หมายถึงอักขระที่อยู่ใต้เคอร์เซอร์เมื่อคุณป้อน ma

`ad`b (also entered in command mode)

มีประโยชน์เพราะจะลบข้อความระหว่างอักขระที่ทำเครื่องหมายด้วยเครื่องหมาย a ถึงอักขระก่อนอักขระที่คุณทำเครื่องหมายด้วยเครื่องหมาย b


'a, .ya A ใช้งานได้ แต่เมื่อฉันลองใช้เครื่องหมายถูกหน้า a -> มันบอกว่า: E492: ไม่ใช่คำสั่งแก้ไข: `a, .ya A. จะช่วยได้เพียงแค่ไม่ใช้ตัวอักษรอื่น กว่า a สำหรับเครื่องหมายในตัวอย่างดังนั้นจึงชัดเจนว่าตัวอักษรใดคือสิ่งที่ :)
justin w
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.