VIM (gvim / macvim) เก็บไฟล์สลับไว้เป็นบัฟเฟอร์ที่ไม่ได้บันทึก / ไม่ได้ตั้งชื่อไว้ที่ไหน


52

VIM (gvim / macvim) เก็บไฟล์สลับไว้เป็นบัฟเฟอร์ที่ไม่ได้บันทึก / ไม่ได้ตั้งชื่อไว้ที่ไหน (ถ้าเป็นเช่นนั้นเลย)

ความเป็นมา: ตลอดการสัมมนาที่เข้มข้นฉันกำลังจดบันทึกในบัฟเฟอร์ MacVim ที่ไม่มีชื่อ / ไม่ได้บันทึกเมื่อ MacBook ไม่มีน้ำผลไม้และขับเคลื่อนลงมาจากที่ไหนเลย (มันไม่ได้หลับ / ไฮเบอร์เนตตามปกติ)

คำถาม: มี ใครรู้บ้างไหมว่ามีโอกาสที่งานที่ไม่ได้บันทึกอาจถูกบันทึกไว้ในไฟล์ swap (.swp) หรือสิ่งที่คล้ายกันซึ่งสามารถกู้คืนได้?

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


1
ชี้แจง: โดยไม่ได้บันทึกฉันหมายความว่าไม่เคยบันทึก ไฟล์ถูกสร้างขึ้นโดยการกด Command-T (ฉันคิดว่าเทียบเท่ากับ: tabe) นั่นคือเปิดบัฟเฟอร์ใหม่ที่ไม่มีชื่อในแท็บใหม่ (ฉันมักจะทำ ': sav somefilename' ในภายหลัง)
davur

ไม่เป็นไร ดูเพิ่มเติมในคำตอบของฉัน
frabjous

คำตอบ:


60

เริ่มเป็นกลุ่มแล้วลอง:

:recover <filename>

หากไฟล์ไม่เคยมีชื่อให้เพียงแค่:

:recover

นั่นคือทางออกที่ดีที่สุดของคุณ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับไฟล์ swap และการกู้คืนโปรดดู:

:help usr_11

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

:set directory=~/vimswap

หรือคล้ายกัน

ดู:

:help swap

สำหรับรายละเอียดทั้งหมด

ไฟล์ vim swap นั้นไม่เหมือนกับบัฟเฟอร์ที่แก้ไขแล้วดังนั้นโปรดแน่ใจว่าได้อ่านสิ่งที่สามารถทำการกู้คืนได้


แก้ไข : ความคิดเห็นตอบคำถาม:

[…] ดูเหมือนว่าจะดูในไดเรกทอรีการทำงานปัจจุบันของคุณ ~ / tmp, / var / tmp และ / tmp เพื่อหาไฟล์ swap และในกรณีของฉันฉันมักจะมีชุดไดเรกทอรีการทำงานปัจจุบันอยู่เสมอ - dsclementsen 5 ต.ค. 53 ที่ 1:42

ตรวจสอบให้แน่ใจว่าได้ตรวจสอบบรรทัดคำสั่ง vim -r arg นี่จะพิมพ์ไฟล์ swap ทั้งหมดที่พบและที่ที่มันอยู่ นอกจากนี้ยังมีข้อมูลพิเศษมากมายเช่นวันที่ / แก้ไข / ชื่อผู้ใช้ / อื่น ๆ ... - Neg_EV 5 ต.ค. 53 ที่ 13:49


สิ่งนี้จะไม่ช่วย โดยไม่ได้บันทึกฉันหมายความว่าไม่เคยบันทึก หมายความว่าฉันเปิดบัฟเฟอร์ใหม่ด้วย: tabe หรือ (Command + T) ดังนั้นเรากำลังพูดถึงบัฟเฟอร์ที่ไม่ได้บันทึก / ไม่มีชื่อ มีตำแหน่งเริ่มต้นที่จัดเก็บงานที่ไม่ได้บันทึกไว้หรือไม่
davur

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

1
มันไม่ไกลเท่าที่ฉันจะบอกได้ ฉันเพิ่งทดสอบโดยการฆ่าเป็นกลุ่มภายนอกในขณะที่แก้ไขไฟล์ใหม่ แต่เมื่อฉันวิ่งไปrecoverโดยไม่มีการโต้เถียงมันให้ฉันเลือกแม้กระทั่งจากช่วงที่เก่ากว่า อย่างไรก็ตามไฟล์ .swp สำหรับบัฟเฟอร์ unnmaed อาจจะอยู่ใน / tmp set directory= <something>แต่มันจะเป็นที่อื่นขึ้นอยู่กับว่าคุณมี
frabjous

2
ตรวจสอบให้แน่ใจว่าได้ตรวจสอบบรรทัดคำสั่ง vim -r arg นี่จะพิมพ์ไฟล์ swap ทั้งหมดที่พบและที่ที่มันอยู่ นอกจากนี้ยังมีข้อมูลพิเศษมากมายเช่นวันที่ / แก้ไข / ชื่อผู้ใช้ / อื่น ๆ ...
Neg_EV

1
ฉันต้องใช้คำสั่ง:recover!เพื่อกู้คืนไฟล์ที่ไม่ได้บันทึกของฉัน

2

ฉันทำงานบน Windows 10 และ:recoverไม่พบไฟล์สลับ vim -rแสดงรายการไฟล์ swap จากเซสชันแก้ไขล่าสุด (ยังไม่เคยบันทึก) ชื่อ _.swp :recover _การกู้คืนเป็นไปได้ด้วย


1

คำตอบคือ: ทั่วทุกสถานที่ เคล็ดลับคือการหาสิ่งที่ถูกต้อง บางคนอยู่ในไดเรกทอรี / tmp ของคุณ แต่มีอยู่มากมายในไดเรกทอรีหลักของคุณ

อาจมีวิธีที่มีประสิทธิภาพมากกว่านี้ แต่สิ่งต่อไปนี้ใช้ได้กับฉันเมื่อฉันทำไฟล์ที่ไม่มีชื่อ (บน MacBook):

ในโฮมไดเรกทอรีค้นหาไฟล์สำรองข้อมูล (ใช้เวลาสองสามวินาทีและอาจจะฉลาดกว่า):

find ./ -name ".s*" > findVimBackups.txt

เปิดไฟล์:

vim findVimBackups.txt

ลบชื่อไฟล์ที่ไม่ได้มีไว้สำหรับการสำรองข้อมูลของไฟล์ที่ไม่มีชื่อ:

:g!/\/\.s..$/d
:g/svn/d

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

ls -ltra <directory>

ฉัน cd ลงในไดเรกทอรีที่ถูกต้องและเปิดเป็นกลุ่มและประเภท: กู้คืนและเลือกการสำรองข้อมูลที่ถูกต้อง


0

ดูเหมือนว่าพวกเขาจะจบลงในไดเรกทอรีการทำงานของคุณ:pwdนี่คือทุกที่ที่คุณเปิดเป็นกลุ่มหรือสลับกันคุณอาจตั้งค่าโดยใช้:cdหรือคล้ายกัน

สลับไฟล์สำหรับบัฟเฟอร์ที่ไม่มีชื่อดูเหมือนว่าจะถูกทิ้งไว้ในนั้นโดยไม่มีชื่อไฟล์ดังนั้นคุณจะจบลงด้วย. swp .swn .swo ฯลฯ ฉันค้นพบสิ่งนี้ไม่ใช่เมื่อพยายามกู้คืนบางอย่าง แต่เมื่อไฟล์ hg ละเว้นของฉันไม่ครอบคลุมพอ คำต่อท้ายที่แตกต่างกัน!

ฉันเดาว่าการมีบัฟเฟอร์ที่ไม่มีชื่อมากมายที่มีการเปลี่ยนแปลงอาจเป็นสาเหตุและการลบบัฟเฟอร์เหล่านี้ทำให้ไฟล์ลึกลับหายไป

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