หมายเหตุ: คุณยังไม่ได้พูดว่าคุณใช้ระบบปฏิบัติการใดอยู่ ข้อมูลต่อไปนี้ใช้งานได้กับ Unix shell แต่ถ้าใช้ Windows คุณสามารถดาวน์โหลด Cygwin ที่ไม่มีกระดูกหรือเชลล์อื่น ๆ ได้
ฉันเคยทำเช่นเดียวกับคุณเรียกใช้:e
เพื่อเปิดไฟล์เดียวกันอีกครั้งเพื่อรับตัวเลือกในการลบไฟล์การกู้คืน หลังจากคอมพิวเตอร์รีสตาร์ทหรือเกิดข้อผิดพลาดฉันจะล้างไฟล์กู้คืน Vim ส่วนที่เหลือทั้งหมดโดยใช้vim -r
ไฟล์ swap และปล่อยให้การกู้คืนดำเนินการต่อ
เมื่อไฟล์ยังไม่เปลี่ยนแปลง
หากไฟล์ไม่เปลี่ยนแปลงฉันต้องการลบไฟล์กู้คืนทันที มันจะดีถ้า Vim สามารถทำสิ่งนี้ได้โดยอัตโนมัติ แต่น่าเสียดายที่มันไม่เป็นเช่นนั้น
เมื่อไฟล์มีการเปลี่ยนแปลง
หากไฟล์มีการเปลี่ยนแปลงฉันเรียกใช้DiffOrig
คำสั่งเพื่อเปรียบเทียบความแตกต่างระหว่างต้นฉบับและเวอร์ชันที่กู้คืน หากฉันพอใจกับการเปลี่ยนแปลงจากไฟล์กู้คืนฉันจะออกจากการบันทึกไฟล์ด้วย:x
คำสั่ง :q!
ถ้าไม่ฉันทิ้งเปลี่ยนแปลงกู้คืนโดยการเลิกสูบบุหรี่ด้วย หากไฟล์กู้คืนไม่ได้เชื่อมโยงกับไฟล์ที่บันทึกไว้เช่น.swp
ฉันมักจะใช้:w filename
เพื่อบันทึกบัฟเฟอร์ที่กู้คืนไปยังไฟล์ที่มีชื่อไฟล์
ผู้ช่วย DiffOrig
ฉันเพิ่มคำสั่งDiffOrigลงในของฉัน.vimrc
เพื่อให้พร้อมใช้งานเสมอ
command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis
เชลล์สคริปต์
ฉันรันสคริปต์ต่อไปนี้ในเชลล์เพื่อค้นหา swap-file ทุกไฟล์ในแผนผังไดเรกทอรีปัจจุบัน จากนั้นไฟล์ swap แต่ละไฟล์จะถูกใช้เพื่อเปิด Vim ใน“ โหมดการกู้คืน”และจะถูกลบหลังจากที่ Vim ถูกปิด
find . -type f -name '.*.sw?' -exec vim -r "{}" -c DiffOrig \; -exec rm -iv "{}" \;
rm -i
ตัวเลือกที่ต้องมีการยืนยัน ( y
) เพื่อลบไฟล์ หากคุณมั่นใจมากขึ้นและต้องการเพิ่มความเร็วของกระบวนการ
:e #
เคล็ดลับของคุณแม้ว่าจะไม่เหมาะ แต่ก็ยังมีประโยชน์มากกว่าคำตอบปัจจุบันด้านล่าง :-)