โดยค่าเริ่มต้นคำสั่งวางใช้"
(“ชื่อ”) ลงทะเบียน ได้อย่างมีประสิทธิภาพคำสั่งใด ๆ ที่เขียนไปยังการลงทะเบียนยังเขียนไปยังการลงทะเบียนที่ไม่มีชื่อดังนั้น yanks ลบและการเปลี่ยนแปลงทั้งหมดที่มีผลต่อมัน นี่คือเหตุผลที่ลำดับ yank-delete-paste ของคุณวางข้อความที่ถูกลบแทนที่ข้อความ yanked
การ0
ลงทะเบียนสามารถช่วยได้ที่นี่ คำสั่ง yank ใด ๆ ที่ไม่ได้ระบุรีจิสเตอร์จะใส่ข้อความ yanked ในรีจิสเตอร์0
(นอกเหนือจาก"
) จะไม่ได้รับผลกระทบจากการลบหรือเปลี่ยนการดำเนินการดังนั้นคุณสามารถใช้มันเพื่อวางสาย yanked หลายครั้งแม้ว่าคุณจะลบหรือเปลี่ยนแปลงกลาง
yy
: รีจิสเตอร์0
และ"
ทั้งคู่ตอนนี้มีสาย yanked
- ย้ายไปที่บรรทัดเพื่อแทนที่
dd
: การลงทะเบียน"
ตอนนี้มีบรรทัดที่ถูกลบ แต่การลงทะเบียน0
ยังคงมีบรรทัดที่ถูกดึง
"0P
: 0
วางสายกระชากเดิมจากการลงทะเบียน
- ย้ายไปที่บรรทัดถัดไปเพื่อแทนที่
dd"0P
(เหมือนด้านบน)
(เนื่องจากตำแหน่งเคอร์เซอร์ทำงานเมื่อเปลี่ยนบรรทัดสุดท้ายของบัฟเฟอร์คุณจะต้องการใช้"0p
แทน"0P
)
นี่ใกล้กับคำตอบของ Bruce Edigerมากยกเว้นว่าคุณไม่จำเป็นต้องระบุการลงทะเบียนเมื่อเริ่มเล่น การใช้รีจิสเตอร์ที่กำหนดชื่อตั้งแต่หนึ่งรายการขึ้นไปนั้นมีประโยชน์มากแม้ว่าคุณจะต้องการ (ตัวอย่าง) แทนที่บางบรรทัดด้วยAAA
แต่บรรทัดอื่น ๆ ที่มีBBB
(ใส่AAA
ในรีจิสเตอร์a
และBBB
ในรีจิสเตอร์b
(หรือทิ้งไว้ในรีจิสตรี0
) )
นอกจากนี้คุณยังสามารถวางจาก0
ในโหมดภาพเส้นที่ชาญฉลาด ( V
) V"0p
เพื่อบันทึกการกดแป้นพิมพ์:
หากคุณไม่ต้องการพิมพ์"0
คุณอาจพบว่าการทำแผนที่สะดวกกว่า:
noremap <Leader>p "0p
noremap <Leader>P "0P
vnoremap <Leader>p "0p
วิธีอื่นคือการลบไป_
(“ต้องห้าม”) ลงทะเบียน เมื่อคุณลบมันการ"
ลงทะเบียนจะไม่ได้รับผลกระทบดังนั้นลำดับ yank-delete-paste ของคุณยังสามารถวางข้อความ yanked จากการลงทะเบียนที่ไม่มีชื่อ
yy
: ลงทะเบียน0
และ"
ตอนนี้ทั้งคู่มีสาย yanked
"_dd
: ไม่มีการเปลี่ยนแปลงทะเบียน
P
: "
วางข้อความกระชากเดิมจากการลงทะเบียน
อีกครั้งคุณอาจพบว่าการทำแผนที่สะดวกกว่า:
noremap <Leader>d "_d
yy
S<C-r>0<Esc>
มีข้อได้เปรียบในการทำซ้ำด้วย.
คำสั่ง