จะแทนที่ข้อความภายใน () ด้วยข้อความที่ถูกดึงก่อนหน้านี้ได้อย่างไร


9

สมมติว่าฉันมีข้อความที่ถูกFnordดึงมาก่อนและเคอร์เซอร์ของฉันอยู่Bที่บรรทัด:

M:mock(Baz)

ฉันจะเปลี่ยนข้อความภายใน () ด้วยข้อความที่ถูกดึงก่อนหน้านี้ได้อย่างไร

ปัจจุบันฉันมักจะทำผิดพลาดโดยทำ:

  • di( aka "ลบภายใน ()"
  • SHIFT + P

แต่สิ่งที่ทำให้ฉันมีข้อความที่แน่นอนอีกครั้งเนื่องจากข้อความที่ถูกลบจะถูกย้ายไปที่การลงทะเบียน

ฉันต้องการ:

M:mock(Fnord)


1
@ Rich คำถามที่ให้ครอบคลุมกรณีทั่วไปมากขึ้นในการแทนที่คำที่แยง ฉันคิดว่าคำถามนี้มีความเฉพาะเจาะจงมากกว่าและไม่ได้รับคำตอบเดียวกัน
k0pernikus

Protip: การ0ลงทะเบียนจะมีข้อความ yanked ล่าสุด :h quote0
Peter Rincker

1
แนวคิดเดียวกันจากคำตอบที่ได้รับการยอมรับของคำถามดังกล่าวสามารถใช้ได้ที่นี่ vi)pด้วยเคอร์เซอร์ในวงเล็บกดเพียง มันเหมือนกับในคำตอบนั้นเพียงแค่กับi)วัตถุข้อความแทนwวัตถุข้อความ
EvergreenTree

1
@ k0pernikus ฉันกลัวว่าเราจะต้องเห็นด้วยไม่เห็นด้วยกับสิ่งนั้น สำหรับฉันส่วนสำคัญของคำถามทั้งสองคือการแทนที่ไม่ใช่วัตถุข้อความที่ใช้ในการปรับใช้
Rich

คำตอบ:


13

คุณสามารถใช้การเลือกที่มองเห็นเพื่อเลือกข้อความที่จะแทนที่แล้ววางทับดังนี้:

vi(p

vi(เลือก Baz (เพราะอยู่ในวงเล็บ) pวาง Fnord ทับ

อย่างไรก็ตามสิ่งนี้จะดึง Baz ไปยังการลงทะเบียนหลังจากวางซึ่งอาจไม่ใช่สิ่งที่คุณต้องการ


10

หากคุณไม่ได้ระบุการลงทะเบียนp(หรือP) จะใช้การลงทะเบียนครั้งสุดท้ายที่เต็มไปด้วย การลงทะเบียนที่ไม่มีชื่อ""ประกอบด้วยข้อความที่ถูกดึงหรือถูกลบล่าสุด (ยกเว้นว่ามีการระบุการลงทะเบียนอื่นเช่นด้วย"ay) แต่สิ่งเหล่านี้ยังใช้"0สำหรับ yanks หรือ"1ลบ / เปลี่ยนแปลง ดูการลงทะเบียน

หากข้อความสุดท้ายที่ถูกกระชากด้วยyคุณสามารถวางได้จากการลงทะเบียนกับ0 "0Pถ้ามันถูกลบคุณสามารถเข้าถึงได้ด้วยการ2ลงทะเบียนด้วย"2P( "1ตอนนี้Baz)

อีกทางหนึ่งคุณสามารถหลีกเลี่ยงการสับสนกับรีจิสเตอร์ของคุณและลบไปยังการลงทะเบียน blackhole"_ :

"_di(P

3

หากการติดตั้งปลั๊กอินเป็นตัวเลือกที่คุณสามารถใช้yankstack.vim จากนั้นคุณสามารถรักษาเวิร์กโฟลว์ปัจจุบันของคุณ:

ปัจจุบันฉันมักจะทำผิดพลาดโดยทำ:

  • di (aka "ลบภายใน ()"
  • SHIFT + P
  • Alt + p - วนไปยัง yank ก่อนหน้า

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