วิธีการแทนที่คำด้วยคำที่ถูกดึงในโหมดปกติ


25

เมื่อฉันต้องแทนที่คำด้วยคำอื่นที่ฉันดึงมาก่อนฉันมักจะใช้เวิร์กโฟลว์ที่ดูเหมือนผิดธรรมชาติสำหรับฉัน:

สมมติว่าฉันมีข้อความนี้:

foo bar buzz

และฉันต้องการดึงfooและแทนที่barด้วยสิ่งที่ฉันดึงมาก่อน

หลังจาก yanking fooฉันเห็นตัวเลือกต่อไปนี้:

ตัวเลือกที่ 1

  1. วางเคอร์เซอร์barด้วยw

  2. ใส่fooด้านหน้าbarด้วยP

  3. วางเคอร์เซอร์ที่ส่วนbที่เหลือbarและลบคำด้วยde

ตัวเลือก 2

  1. วางเคอร์เซอร์บนแถบด้วย w

  2. ใช้deเพื่อลบbar

  3. ใส่เนื้อหาของการลงทะเบียน 0 ด้วย"0P(ตั้งแต่ผมลบbar, fooไม่สามารถเข้าถึงได้อีกต่อไปด้วยง่ายp)

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

ฉันรู้ว่าโหมดการแทนที่ถูกกระตุ้นด้วยRแต่มันไม่อนุญาตให้ใส่สิ่งที่ถูกกระชาก

TL : DR : วิธีแทนที่คำด้วยเนื้อหาของ yank register ได้อย่างไร

คำตอบ:


31

สมมติว่าคุณได้ดึงแล้วfooมีyeหรือสิ่งที่คล้ายกันและที่เคอร์เซอร์อยู่ที่ไหนสักแห่งบนfooคุณสามารถใช้Wvep:

  • Wไปที่bar(ซึ่งเป็นตัวเลือกที่ชัดเจนและจะขึ้นอยู่กับตำแหน่งเคอร์เซอร์ปัจจุบัน);
  • v เพื่อเริ่มโหมดภาพ
  • eเพื่อไปยังจุดสิ้นสุดของคำ (คุณสามารถใช้การเคลื่อนไหวอื่น ๆ ที่นี่เช่นiw);
  • pเพื่อวางfoo; สิ่งนี้จะแทนที่การเลือกภาพปัจจุบัน (ซึ่งอยู่ในการลงทะเบียนที่ไม่มีชื่อ"")


6

ฉันได้พบวิธีอื่นในการทำเช่นนี้มันคล้ายกับตัวเลือกที่ 2 เล็กน้อย แต่มีข้อดีของการไม่ยุ่งกับสถานะของการลงทะเบียน

ความคิดคือการใช้ " หลุมดำลงทะเบียน ": การลงทะเบียนนี้สามารถเข้าถึงได้ผ่านทาง"_และมีลักษณะพิเศษที่คุณสามารถเขียนลงในมัน แต่ไม่ได้อ่านจากมันดังนั้นเหมือนหลุมดำที่ลงทะเบียนนี้ทำให้หายไปโดยสิ้นเชิงอะไรก็ตามที่เข้าไป ที่นี่เราสามารถใช้งานได้ดังนั้นfooอยู่ในทะเบียน yank แม้หลังจากbarการลบ

ด้วยวิธีการนี้ worflow หลังจาก yanking fooจะเป็น:

  • ไปbarกับW(หรือคำที่ต้องการแน่นอน)
  • ใช้ "การลงทะเบียนหลุมดำ" เพื่อลบbarด้วย"_de
  • วางจากการลงทะเบียนงัดด้วยfoo Pการลงทะเบียนยังคงมีอยู่fooตั้งแต่barเข้าไปในหลุมดำ

ฉันไม่แน่ใจว่านั่นเป็นทางออกที่ดีกว่า @ Carpersmoker ( ในแง่ของ vimgolf @Carpetsmoker ชนะ ) แต่ฉันไม่รู้เกี่ยวกับการลงทะเบียนหลุมดำและฉันคิดว่าบางคนอาจสนใจที่จะรู้


3
  1. ไปที่จุดเริ่มต้นของ "foo" yiwกด นั่นแหล่ะคำภายใน

  2. ไปที่ "บาร์" wกดตัวอักษร จากนั้นเลือกและดึงกลับมา:viw"0p

ฉันใช้ciwและyiwมาก


4
การใช้วัตถุข้อความอย่างiwน่าสนใจ แต่วิธีการแก้ปัญหาของคุณเหมือนกับของ @ CarpetSmoker: เลือกคำที่สองและใส่คำแรก ฉันคิดว่าโซลูชันของคุณจะใช้งานง่ายpแทนที่จะใช้การ"0ลงทะเบียน
statox

1
  • เมื่อเคอร์เซอร์อยู่ที่ใดก็ได้บนคำว่า

    • yiwงัดคำและเก็บไว้ในการ0ลงทะเบียน
  • ไปที่คำเป้าหมายที่จะถูกแทนที่

    • ciw จะลบคำและทำให้คุณอยู่ในโหมดแทรก
    • ctrl-r. A "จะปรากฏขึ้นเพื่อขอให้เรียกใช้การลงทะเบียน
    • 0 จะวางคำที่แยง

คำ Yanked ถูก (ปกติ!) เก็บไว้ในการ0ลงทะเบียน ดู:registersเพื่อดูบัฟเฟอร์ที่เก็บไว้ นี่อาจเป็นขั้นตอนที่ใช้เวลานาน IMHO จะเปิดประตูสู่เทคนิคการลงทะเบียนที่ซับซ้อนยิ่งขึ้น

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