ฉันจะกู้คืนไฟล์ต้นฉบับจากไฟล์. swp ได้อย่างไร


57

ฉันพยายามเปิดไฟล์โดยใช้ .swp viและcatแต่มันแสดงขยะ


คุณใช้ vi หรือ vim หรือไม่?
frabjous

มันใช้งานได้กับemacs? (หรือประเสริฐ, nano, ed, ฯลฯ )
ตรงไปตรงมา

คำตอบ:


94
vim -r .swp

นี่จะเข้าสู่โหมดการกู้คืนและให้ข้อมูลเพิ่มเติมแก่คุณ ฉันคิดว่านี่คือสิ่งที่คุณต้องการ

.swXไฟล์จะถูกทิ้งไว้ข้างหลังหากเซสชั่นที่มีไฟล์ที่ไม่ได้บันทึกถูกฆ่า / ล่ม / สิ่งอื่นที่ไม่ดีเกิดขึ้น ซึ่งจะแสดงในช่วงเวลาที่บัฟเฟอร์ที่ไม่ได้บันทึกถูกเปิดในเซสชัน Vim vim -rอ่านไฟล์ชั่วคราวเหล่านี้และสร้างเนื้อหาใหม่ :w newfilenameหลังจากที่คุณได้กู้คืนมันเพียงแค่บันทึกเป็นปกติเช่น


8
สิ่งที่ฉันกำลังมองหาอย่างแม่นยำ สำหรับคนอื่น ๆ นี่คือวิธีการกู้คืนไฟล์ที่ยังไม่ได้บันทึกของคุณ วิธีการด้านบนใช้ได้ดีถ้ามีไฟล์อยู่แล้ว แต่คุณไม่สามารถเปิดไฟล์ที่ไม่มีชื่อได้
Eric Hu

17

คุณไม่จำเป็นต้องมีไฟล์ต้นฉบับเพื่อกู้คืนไฟล์. swp เพียงแค่เปิดไฟล์ราวกับว่ามันมีอยู่ เป็นกลุ่มจะมองหาไฟล์ที่มีนามสกุล. swp และเสนอให้กู้คืนได้

เช่น:

$ ls -a
. .. .test.txt.swp
$ vim test.txt
[...]
Swap file ".test.txt.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:

เพียงกด R เพื่อกู้คืนและ: wq ไฟล์

แก้ไข: โปรดทราบว่าไฟล์. swp มีการเปลี่ยนแปลงที่ทำกับไฟล์เท่านั้น (ดูความคิดเห็น) ซึ่งหมายความว่าคุณจะต้องดึงสำเนาไฟล์ล่าสุดจากการสำรองข้อมูลจากนั้นใช้กลุ่มเพื่อเรียกคืนการเปลี่ยนแปลงล่าสุด หากคุณไม่มีสำเนาสำรองของไฟล์แสดงว่าคุณโชคไม่ดี


2
แน่นอนคุณต้องมีไฟล์ต้นฉบับโดยที่ข้อมูลในไฟล์. swp นั้นไม่มีประโยชน์ ดูที่ ": help swap-file" มีสถานการณ์ที่อาจทำงานโดยไม่มีไฟล์ต้นฉบับได้ แต่ไฟล์. swp จะเก็บข้อมูลการเปลี่ยนแปลงเท่านั้นและต้องมีจุดเริ่มต้นบางอย่างในการใช้ข้อมูลนั้นในระหว่างการกู้คืน
Heptite

คุณพูดถูก ที่จริงฉันไม่รู้เรื่องนี้เกี่ยวกับเสียงเรียกเข้า แต่มันมีเหตุผลเท่านั้นที่การจัดเก็บสำเนาของไฟล์ต้นฉบับทั้งหมดจะเป็นการสิ้นเปลืองมหาศาล ดังนั้นคำตอบคือ: กู้คืนไฟล์ของคุณจากการสำรองข้อมูลจากนั้นใช้เสียงเรียกเข้าเพื่อกู้คืนการแก้ไขล่าสุด
Vegar Westerlund

การจัดเก็บไฟล์ทั้งหมดใน swp เพียงครั้งเดียวจะสิ้นเปลืองใช่ แต่ฉันเห็นคุณค่าที่เป็นไปได้ในการรวบรวมไฟล์ swp (เมื่อเปิดใช้งาน) ด้วยเหตุผลเดียวกันกับที่คุณแก้ไขผ่าน diff และแก้ไขต้นฉบับในการบันทึกอย่างชัดเจนเท่านั้น หากคุณสามารถลำดับของ diffs ให้สร้างผลรวมบางส่วน (วันที่ก่อนวันนี้ -> nightly; nightly + today = current) ฯลฯ ฉันพบ ': pre [เสิร์ฟ] `ใน manuel ฉันคิดว่ามันทำงานได้อย่างนั้น ไม่ว่าในกรณีใด ๆ บรรทัดที่สำคัญที่สุดคือ:The original file is no longer needed for recovery.
จอห์นพี

ดูเหมือนว่าจะทำงาน - :preserveและ:set cpoptions=...&ปล่อยไฟล์. swp และ. swo ไว้ในไดเรกทอรีและเสนอให้กู้คืนจากทั้งคู่ การใช้vim -r <file>คุณสามารถเลือกระหว่าง. swp และ. swo การแก้ไขเพิ่มเติมจะสร้าง. swn, .swm ฯลฯ ซึ่งดูเหมือนจะเป็นผลรวมของการแลกเปลี่ยนบางส่วนจนถึงจุดนั้น คุณสามารถเปลี่ยนกลับไปเป็นเวอร์ชั่นที่คุณชื่นชอบและแก้ไข (~ = ทางแยก) หรือบันทึก (~ = ที่ซ่อน) ในที่สุดคุณสามารถ tar ไฟล์ swap, daemonize สำรองของพวกเขา ฯลฯ ฉันอาจจะผิดเกี่ยวกับรายละเอียดเมื่อมันมาถึงไฟล์ขนาดใหญ่ - ฉันไม่แน่ใจว่าวิธีที่มีผลต่อไฟล์ swap พิเศษ - ดูด้านล่าง
John P

(ต่อ) - บัฟเฟอร์ดำเนินการตั้งค่าสถานะและเป็นบัฟเฟอร์ที่สร้างไฟล์ swap ดังนั้นแม้ว่าจะไม่ได้ตั้งค่าสถานะจากการกำหนดค่าส่วนกลางหรือ autoload โดยทั่วไปพวกเขาจะได้รับมรดกระหว่างการกู้คืนตัวเอง ในการแทนที่ลำดับการกู้คืนด้วยไฟล์กู้คืนเดียวคุณสามารถย้าย swap ที่คุณต้องการเป็น. swp และซ่อนส่วนที่เหลือ ฉันชอบที่จะรู้เพิ่มเติมเกี่ยวกับการทับซ้อนระหว่างการกู้คืนไฟล์และการจัดการเซสชัน Vim หากใครก็ตามสามารถเติมเต็มช่องว่าง
John P

7

เปิดไฟล์ต้นฉบับโดยใช้กลุ่มและเลือกตัวเลือกการกู้คืน


ฉันไม่มีไฟล์ต้นฉบับฉันแค่มี '.swp'
zarna

1
นั่นสำคัญน้อยกว่าที่คุณคิด เปิดโดยไม่คำนึงถึง
Ignacio Vazquez-Abrams


7

หลังจากอ่านความคิดเห็นของ Vegar Westerlund และ Heptite แล้วฉันต้องการทราบว่าจุดใดบ้างที่ไฟล์ต้องการ (หรือสำเนาสำรอง) เพื่อกู้คืนจากไฟล์. swp นี่คือสิ่งที่ทำ:

ฉันเปิดไฟล์บรรทัด 975 แก้ไขบนบรรทัด 949 (สร้าง.swpไฟล์) และฆ่ากระบวนการแล้วลบต้นฉบับ $ vim Original_Fileถามว่าฉันต้องการกู้คืนจาก. swp หรือไม่>> ใช่; เฉพาะ 68 บรรทัดแรกและ 34 บรรทัดสุดท้าย (เริ่มต้น 8 บรรทัดด้านบนการแก้ไขของฉัน) ได้รับการกู้คืนจริง

จากนั้นฉันทำการทดสอบซ้ำด้วยไฟล์ขนาดเล็ก: จาก 20 ถึง 200 บรรทัดไฟล์. swp มีเนื้อหาต้นฉบับ 100% แต่ที่ 300 บรรทัดเฉพาะบรรทัดแรก 68 และ 18 บรรทัดสุดท้าย (เริ่มต้น 2 บรรทัดเหนือการแก้ไขของฉัน) รวมอยู่ใน. swp

เป็นข้อสรุปที่ดีที่จะรู้ว่าเสียงเรียกเข้าจะบันทึก "ส่วนหัว" ของไฟล์และ "ด้านล่าง" ในไฟล์. swp อาจมีการตั้งค่าเพื่อควบคุมจำนวนบรรทัดที่ควรจะเป็น. swp

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