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 vim
untuk berjalan tanpa itu.
File apa pun yang Anda edit vim
akan memiliki file swap yang sesuai saat Anda mengedit , yang vim
digunakan untuk melacak perubahan. Ketika Anda berhenti mengedit file, vim
secara 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 vim
program 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 .swp
file tetap tertinggal; contoh lain dari skenario kedua ini adalah Anda secara tidak sengaja menutup jendela atau tab terminal yang memiliki vim
sesi 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 q
tombol untuk (Q)uit
sesi tambahan ini, dan kembali ke pengeditan melalui vim
sesi asli .
Kadang-kadang jika saya tidak sepenuhnya yakin, saya (Q)uit
kemudian berlari jobs
untuk memverifikasi apakah saya menjalankan vim
terminal yang sama persis; jika tidak ada yang muncul, saya berlari ps -ef | grep vim
untuk memeriksa apakah saya menjalankan di vim
tempat lain (yaitu di jendela atau tab terminal lain). Intinya, saya selalu mencoba untuk melanjutkan pengeditan melalui vim
sesi asli .
Jika saya yakin bahwa saya tidak dapat kembali ke sesi pengeditan asli, dan saya masih disajikan dengan opsi berikut, maka saya tekan r
untuk (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 vim
dengan -r
opsi, 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 ENTER
untuk 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 vim
sesi ini secara paksa :
:q!
Selanjutnya, bandingkan dua file:
diff notes notes2
Jika diff
pengembalian 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 diff
mengembalikan 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.