ฉันต้องการเพิ่มประสิทธิภาพเวิร์กโฟลว์ "ค้นหาและแทนที่" ใน Vim มันเป็นสิ่งที่ฉันทำบ่อยๆเพราะฉันมั่นใจว่าพวกคุณส่วนใหญ่ก็เช่นกัน โดยปกติบางสิ่งบางอย่างตามแนว - คัดลอกบล็อกและเปลี่ยนชื่อของตัวแปรในไม่กี่แห่ง ฉันรู้ว่าฉันรู้ว่าอาจเป็นสาเหตุของการสะท้อน "ทำไมคุณคัดลอกและวางรหัส" แต่อย่าไปลงที่ถนนนั้น ... มีกรณีการใช้งานที่ถูกต้องมากมาย :)
ฉันตระหนักดีถึงการค้นหาและแทนที่คำสั่ง: :s
หรือ:%s
แต่ฉันไม่ชอบพวกเขา มันบังคับให้ฉันพิมพ์ทั้งชื่อตัวแปรแบบเต็มที่ฉันค้นหาและสิ่งที่ฉันเปลี่ยนไป อาจจะมีวิธีที่ดีกว่าในการแก้ไขปริมาณการพิมพ์ด้วย:%s
? ฉันมักจะใช้ชื่อตัวแปรอธิบายยาว ๆ เพื่อที่จะเป็นตัวแบ่งข้อตกลงสำหรับฉัน ฉันไม่ชอบว่าการพิมพ์ชื่อตัวแปรตั้งแต่ต้นนั้นเป็นเรื่องที่พิมพ์ได้ง่ายและสามารถใช้เวลาและสมองกำลังตามล่าตัวพิมพ์ผิด ฉันชอบพิมพ์ครั้งเดียวแล้วคัดลอกและวางเพื่อหลีกเลี่ยงปัญหานี้โดยสิ้นเชิงถ้าเป็นไปได้
เวิร์กโฟลว์ปัจจุบันของฉันใช้การเคลื่อนไหว / ดึง / เลือก / ค้นหา / วางเพื่อย้ายไปรอบ ๆ ไฟล์และแทนที่ทีละไฟล์ มันไม่ดี แต่มีประโยชน์ในการหลีกเลี่ยงการพิมพ์ชื่อตัวแปรแบบเต็ม ฉันอาจต้องพิมพ์ตัวอักษรสองสามตัวแรกด้วย/
หรือใช้คำสั่งการเคลื่อนไหวอื่น (เช่นfx
) ขึ้นอยู่กับสิ่งที่อยู่รอบ ๆ แล้วกดve
เพื่อเลือกคำทั้งหมด ฉันไม่สนใจว่าฉันต้องทำซ้ำทุกครั้ง ฉันไม่เคยทำการค้นหาแบบเต็มโดยไม่ยืนยันการเปลี่ยนแปลงแต่ละครั้ง แต่มันจะดีกว่าถ้าฉันสามารถทำซ้ำการดำเนินการแทนด้วยการกดแป้นเดียว (ซึ่งฉันไม่สามารถทำได้ด้วยวิธีนี้) แต่ละทดแทนมักจะเป็นสิ่งที่ต้องการn
จากนั้นve
แล้วp
(หรือแย่"0p
)
มีวิธีที่เร็วกว่านี้ไหม
n
ve
"0p
นั่นคือกรณีการใช้งานหลักของฉันมีปัญหากับและจะไปอะไรเช่น ซึ่งน่าเสียดายที่ไม่สามารถทำซ้ำได้ด้วย.
n ce ctrl-r 0 <esc> n.n.n.n.n.n.
.
ทำซ้ำ "command block" สุดท้าย (ไม่แน่ใจในคำศัพท์ที่แน่นอนตัวอย่างเช่น: ย้าย + action + text สำหรับ exemple:cwtoto<Esc>
(เปลี่ยนจากเคอร์เซอร์เป็นจุดสิ้นสุดของคำด้วย "toto")c/foo<enter>bar<Esc>
(เปลี่ยนจากเคอร์เซอร์เป็นก่อน " foo "และแทนที่ด้วย" bar ") จากนั้นคุณสามารถย้าย (ด้วยเคอร์เซอร์ hjkl หรือตัวเลข + hjkl (ทำ n ครั้ง), G (ไปที่จุดสิ้นสุดของไฟล์) / บางสิ่ง (ไปก่อน" บางสิ่งบางอย่าง "), ฯลฯ ) และจากนั้นกด.
ที่จะทำซ้ำเดียวกัน 'คำสั่งบล็อก'