Pesan ini sebenarnya cukup penting jika Anda khawatir tidak kehilangan teks yang berpotensi tidak Anda simpan. Seharusnya tidak dianggap menjengkelkan, dan tidak boleh menyebabkan Anda buru-buru menghapus file swap atau mengkonfigurasi vimuntuk berjalan tanpa itu.
File apa pun yang Anda edit vimakan memiliki file swap yang sesuai saat Anda mengedit , yang vimdigunakan untuk melacak perubahan. Ketika Anda berhenti mengedit file, vimsecara otomatis akan membuang file swap yang sesuai. Oleh karena itu, keberadaan file swap, dan upaya Anda untuk menulis melampaui file asli, harus menjadi pertimbangan dan tindakan yang tepat.
Dua skenario yang disajikan dalam pesan ( E325: ATTENTION Found a swap file) sebenarnya cukup umum: (1) salah satu vimprogram lain sedang mengedit file yang sama yang Anda coba edit (sebenarnya bisa orang lain - dalam hal ini benar - benar tidak masuk akal untuk hanya menghapus file swap secara membabi buta - atau itu bisa Anda di jendela terminal lain atau tab), atau (2)vim sesi sebelumnya macet (paling sering ini terjadi ketika Anda mengedit jarak jauh, dan sesi jaringan terputus - di mana Jika sesi vim tidak keluar secara normal, dan .swpfile tetap tertinggal; contoh lain dari skenario kedua ini adalah Anda secara tidak sengaja menutup jendela atau tab terminal yang memiliki vimsesi aktif atau berlatar belakang ).
Ketika saya menjumpai pesan ini, saya pertama kali berpikir apakah saya mengedit file ini di jendela atau tab terminal lain, karena saya biasanya beroperasi dengan beberapa jendela terminal dengan masing-masing beberapa tab:

Jika saya menyadari bahwa saya sedang mengedit di tempat lain, dan dapat kembali ke sana , saya kemudian tekan qtombol untuk (Q)uitsesi tambahan ini, dan kembali ke pengeditan melalui vimsesi asli .
Kadang-kadang jika saya tidak sepenuhnya yakin, saya (Q)uitkemudian berlari jobsuntuk memverifikasi apakah saya menjalankan vimterminal yang sama persis; jika tidak ada yang muncul, saya berlari ps -ef | grep vimuntuk memeriksa apakah saya menjalankan di vimtempat lain (yaitu di jendela atau tab terminal lain). Intinya, saya selalu mencoba untuk melanjutkan pengeditan melalui vimsesi asli .
Jika saya yakin bahwa saya tidak dapat kembali ke sesi pengeditan asli, dan saya masih disajikan dengan opsi berikut, maka saya tekan runtuk (R)ecover.
Swap file ".notes.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort:
Menekan r, Anda akan melihat pesan seperti ini:
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
Jika, di sisi lain, saya tidak lagi dihadapkan dengan opsi-opsi itu, karena saya berada di shell prompt, maka saya menjalankan vimdengan -ropsi, sebagai berikut:
vim -r notes
Pesan yang dihasilkan akan serupa:
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
Either way, tekan ENTERuntuk melanjutkan, dan Anda akan melihat file Anda.
Catatan: Jika Vim ragu tentang apa yang ditemukannya, Vim akan memberikan pesan kesalahan dan menyisipkan baris dengan "???" dalam teks. Jika Anda melihat pesan kesalahan saat memulihkan, cari di file untuk "???" untuk melihat apa yang salah. Anda mungkin ingin memotong dan menempel untuk mendapatkan teks yang Anda butuhkan.
Komentar yang paling umum adalah "??? LINES MISSING". Ini berarti bahwa Vim tidak dapat membaca teks dari file asli. Ini dapat terjadi jika sistem macet dan sebagian file asli tidak disimpan.
Yang mengatakan, saya belum pernah melihat ???tanda - tanda itu, jadi ini pasti kejadian yang benar-benar langka .
Selanjutnya, simpan (yaitu menulis) konten ke file lain (biasanya saya hanya menambahkan "2" ke akhir nama file asli):
:w notes2
Selanjutnya, keluar dari vimsesi ini secara paksa :
:q!
Selanjutnya, bandingkan dua file:
diff notes notes2
Jika diffpengembalian tidak ada , itu berarti tidak ada perbedaan, dan aman untuk menghapus file swap dan file kedua:
rm .notes.swp notes2
Pada titik ini, buka file asli dan lanjutkan seolah-olah tidak pernah ada masalah:
vim notes
Jika diffmengembalikan sesuatu , itu berarti file asli (melalui file swap) memiliki perubahan itu, berkat pemulihan, telah disimpan ke file kedua.
Karena perubahan tersebut ditangkap dalam file kedua, Anda aman untuk menghapus file swap dan menimpa file asli dengan yang kedua:
rm .notes.swp
remove .notes.swp? y
mv notes2 notes
overwrite notes? (y/n [n]) y
Pada titik ini, buka file asli dan lanjutkan seolah-olah tidak pernah ada masalah:
vim notes
Ini sepertinya banyak pekerjaan, tetapi begitu Anda terbiasa dengan alur kerja, dibutuhkan sekitar 20 detik maks.