ข้อความนี้ค่อนข้างสำคัญหากคุณสนใจที่จะไม่สูญเสียข้อความที่คุณไม่ได้บันทึก ไม่ควรถือว่าน่ารำคาญและไม่ควรทำให้คุณลบไฟล์ swap หรือกำหนดค่าvimให้รันโดยไม่ต้องรีบ
ไฟล์ใด ๆ ที่คุณแก้ไขvimจะมีไฟล์สลับที่เกี่ยวข้องในขณะที่คุณแก้ไขซึ่งvimใช้ในการติดตามการเปลี่ยนแปลง เมื่อคุณออกจากการแก้ไขไฟล์vimจะยกเลิกไฟล์ swap ที่เกี่ยวข้องโดยอัตโนมัติ ดังนั้นการมีอยู่ของไฟล์สว็อปและความพยายามที่จะเขียนทับไฟล์ต้นฉบับของคุณควรเป็นสาเหตุของการพิจารณาและการดำเนินการที่เหมาะสม
ทั้งสองสถานการณ์ที่นำเสนอในข้อความ ( E325: ATTENTION Found a swap file) เป็นจริงค่อนข้างทั่วไป: (1)อย่างใดอย่างหนึ่งอีกvimโปรแกรมแก้ไขไฟล์เดียวกันที่คุณกำลังพยายามที่จะแก้ไข (มันจริงอาจจะเป็นคนอื่น - ในกรณีที่มันจริงๆจะไม่ทำให้รู้สึก เพื่อลบไฟล์ swap อย่างสุ่มสี่สุ่มห้า - หรืออาจเป็นคุณในหน้าต่างเทอร์มินัลหรือแท็บอื่น) หรือ(2)vimเซสชันก่อนหน้าล้มเหลว (ส่วนใหญ่เกิดขึ้นเมื่อคุณแก้ไขจากระยะไกลและเซสชันเครือข่ายขาด - ในกรณีที่เซสชัน vim ไม่ได้ออกตามปกติและ.swpไฟล์ยังคงอยู่เบื้องหลังตัวอย่างอื่นของสถานการณ์จำลองที่สองนี้คือคุณได้ปิดหน้าต่างเทอร์มินัลหรือแท็บที่บังเอิญvimเซสชันหรือแบ็คกราวน์อยู่โดยไม่ตั้งใจ)
เมื่อฉันพบข้อความนี้ฉันคิดก่อนว่าฉันจะแก้ไขไฟล์นี้ในหน้าต่างเทอร์มินัลหรือแท็บอื่นหรือไม่เพราะปกติแล้วฉันจะทำงานกับหน้าต่างเทอร์มินัลหลายอันที่มีแท็บหลายแท็บแต่ละอัน:

หากฉันรู้ว่าฉันกำลังแก้ไขในที่อื่นและสามารถกลับไปที่เดิมได้ฉันก็กดqปุ่มไปที่(Q)uitเซสชันเพิ่มเติมนี้และกลับไปแก้ไขผ่านvimเซสชันเดิม
บางครั้งถ้าฉันไม่แน่ใจทั้งหมดฉัน(Q)uitแล้วเรียกใช้jobsเพื่อตรวจสอบว่าฉันกำลังทำงานvimในสถานีเดียวกันแน่นอน; หากไม่มีอะไรเกิดขึ้นฉันps -ef | grep vimจะตรวจสอบว่าฉันทำงานอยู่vimที่อื่นหรือไม่ (เช่นในหน้าต่างเทอร์มินัลหรือแท็บอื่น) ประเด็นคือฉันพยายามที่จะทำการแก้ไขต่อผ่านvimเซสชันเดิมเสมอ
ถ้าผมมั่นใจว่าผมไม่สามารถกลับไปแก้ไขเซสชั่นเดิมและฉันกำลังนำเสนอยังคงอยู่กับตัวเลือกต่อไปแล้วผมก็กดไปr(R)ecover
Swap file ".notes.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort:
กดrคุณจะเห็นข้อความดังนี้:
Swap file ".notes.swp" already exists!
"notes" 18L, 46C
Using swap file ".notes.swp"
Original file "/private/tmp/notes"
Recovery completed. Buffer contents equals file contents.
You may want to delete the .swp file now.
Press ENTER or type command to continue
ในทางกลับกันถ้าฉันไม่ต้องเผชิญหน้ากับตัวเลือกเหล่านั้นอีกต่อไปเพราะฉันอยู่ที่พรอมต์เชลล์แล้วฉันก็รันvimด้วย-rตัวเลือกดังต่อไปนี้:
vim -r notes
ข้อความผลลัพธ์จะคล้ายกัน:
Using swap file ".notes.swp"
Original file "/private/tmp/notes"
Recovery completed. Buffer contents equals file contents.
You may want to delete the .swp file now.
Press ENTER or type command to continue
ทั้งสองวิธีกดENTERเพื่อดำเนินการต่อและคุณจะเห็นไฟล์ของคุณ
หมายเหตุ: หาก Vim มีข้อสงสัยเกี่ยวกับสิ่งที่พบก็จะให้ข้อความแสดงข้อผิดพลาดและแทรกบรรทัดด้วย "???" ในข้อความ หากคุณเห็นข้อความแสดงข้อผิดพลาดขณะกู้คืนให้ค้นหาในไฟล์สำหรับ "???" เพื่อดูว่ามีอะไรผิดปกติ คุณอาจต้องการตัดและวางเพื่อให้ได้ข้อความที่คุณต้องการ
คำพูดที่พบบ่อยที่สุดคือ "??? LINES MISSING" ซึ่งหมายความว่า Vim ไม่สามารถอ่านข้อความจากไฟล์ต้นฉบับ สิ่งนี้อาจเกิดขึ้นได้หากระบบขัดข้องและบางส่วนของไฟล์ต้นฉบับไม่ได้รับการบันทึก
ที่กล่าวว่าฉันไม่เคยเห็น???เครื่องหมายเหล่านั้นดังนั้นนี่จะเป็นเหตุการณ์ที่เกิดขึ้นได้ยาก
ต่อไปให้บันทึก (เช่นเขียน) เนื้อหาไปยังไฟล์อื่น (โดยปกติฉันจะต่อท้าย "2" ต่อท้ายชื่อไฟล์ต้นฉบับ):
:w notes2
ถัดไปบังคับปิดvimเซสชันนี้:
:q!
ถัดไปเปรียบเทียบสองไฟล์:
diff notes notes2
หากdiffไม่มีการคืนค่านั่นหมายความว่าไม่มีความแตกต่างและปลอดภัยที่จะลบทั้งไฟล์ swap และไฟล์ที่สอง:
rm .notes.swp notes2
ถึงตอนนี้เปิดไฟล์ต้นฉบับและดำเนินการต่อราวกับว่าไม่เคยมีปัญหา:
vim notes
หากdiffส่งคืนบางสิ่งนั่นหมายถึงไฟล์ต้นฉบับ (ผ่านไฟล์สลับ) มีการเปลี่ยนแปลงที่บันทึกไว้ในการกู้คืนด้วยไฟล์ที่สอง
เนื่องจากการเปลี่ยนแปลงเหล่านั้นถูกบันทึกในไฟล์ที่สองคุณจึงปลอดภัยในการลบไฟล์ swap และเขียนทับไฟล์ต้นฉบับด้วยไฟล์ที่สอง:
rm .notes.swp
remove .notes.swp? y
mv notes2 notes
overwrite notes? (y/n [n]) y
ถึงตอนนี้เปิดไฟล์ต้นฉบับและดำเนินการต่อราวกับว่าไม่เคยมีปัญหา:
vim notes
ดูเหมือนว่าจะใช้งานได้มากมาย แต่เมื่อคุณคุ้นเคยกับขั้นตอนการทำงานจะใช้เวลาสูงสุด 20 วินาที