ทำไม p วางบรรทัดที่คัดลอกไว้หลังบรรทัดปัจจุบันแทนที่จะเป็นหลังคำปัจจุบัน


12

สมมติว่าฉันมีสี่บรรทัดต่อไปนี้:

line1
line2
line3
line4

ตอนนี้ถ้าฉันไปที่line1และทำสิ่งyyที่คัดลอกบรรทัดและจากนั้นไปที่จุดเริ่มต้นline3และทำการวางโดยใช้ 'p' ฉันจะได้รับ

...
line3
line1
line4
....

ทำไมมันวางline1หลังจากline3ในบรรทัดใหม่

แม้ว่าตอนแรกของฉันจะเป็นเพราะอักขระขึ้นบรรทัดใหม่ $ ถูกแนบกับ line3 และเมื่อฉันกดpเป็นกลุ่มให้ถือว่าline3$เป็นคำเดียวดังนั้นจึงวางหลังจากline3$นั้น อย่างไรก็ตามดูเหมือนว่าฉันเข้าใจผิด เพราะถ้าฉันทำสิ่งนี้line3 $แล้วทำpที่จุดเริ่มต้นของบรรทัดฉันจะได้ผลลัพธ์เดียวกัน

ทำไมไม่pสร้างสายใหม่และวางเป็นเส้นใหม่หลังจากที่line3?

คำตอบ:


21

เมื่อคุณลบบรรทัดโดยใช้ddคุณทำการลบlinewise

pน้ำพริกคำสั่งหลังจากที่ตำแหน่งเคอร์เซอร์ เนื่องจากการลงทะเบียนเริ่มต้นถูกเติมด้วยเนื้อหา linewise ซึ่งหมายความว่าจะวางหลังจากบรรทัดที่เคอร์เซอร์เปิดอยู่

หากคุณลบเนื้อหาของบรรทัดในลักษณะ characterwise (เช่น, 0D) จากนั้นการลงทะเบียนจะเป็น characterwise และวางหลังจากอักขระที่เคอร์เซอร์เปิดอยู่

โดยทั่วไปพฤติกรรมควรทำตามสิ่งที่คาดหวังจากการลบ / ดึงและวาง แต่ก็เป็นไปได้ที่จะปรับเปลี่ยน-wiseNess ของการลงทะเบียนใช้getreg () / setreg ()

แต่ระวังให้ดี จากตัวอย่างแรกของคุณเพียงแค่เปลี่ยนการลงทะเบียนเป็น characterwise ไม่ได้ลบ newline ที่เป็นส่วนหนึ่งของการลบ มันแค่เปลี่ยนวิธีการวางที่เกิดขึ้น


สำหรับคำแนะนำเกี่ยวกับสถานการณ์เฉพาะของการลบทั้งบรรทัด แต่การวางอักขระให้ดูที่โพสต์นี้

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