Jangan Panik!
Memulihkan file selalu aman, karena vim tidak pernah menulis perubahan apa pun sampai Anda menulisnya sendiri. Jadi memulihkan dari file swap dan kemudian menutup tanpa menyimpan tidak akan mengubah apa pun.
Atur swapfile Anda:
Dapatkan vim untuk meletakkan semua file swap Anda di tempat yang sama, sehingga Anda selalu tahu di mana mereka berada:
set directory^=$HOME/.vim/swap//
atau dimanapun Anda suka. Gunakan //
di akhir nama file membuat vim menggunakan jalur file absolut untuk nama file swap sehingga Anda tidak mendapatkan collision nama. Pastikan direktori itu ada, atau vim tidak akan menggunakannya (itu tidak akan membuatnya untuk Anda).
Catatan: Ini hanya berfungsi pada variabel lingkungan, jika Anda ingin menggunakan variabel vimscript maka kita perlu menggunakan beberapa :execute
sihir:
execute "set directory^=".my_vim_home_var."/swap//"
Perbedaannya adalah:
Bantuan vim menunjukkan perintah yang sangat berguna untuk digunakan dalam situasi ini: :DiffOrig
. Ini bukan perintah vim default , jadi salin implementasi dari :h :DiffOrig
ke vimrc Anda. (Ini juga $VIMRUNTIME/defaults.vim
jika Anda memiliki vim8). Sekarang, Anda dapat memulihkan file dan menjalankan DiffOrig untuk mendapatkan vimdiff tentang apa yang berubah dari versi yang tidak dimodifikasi.
Jika Anda ingin membandingkan konten beberapa file swap, pulihkan file Anda dengan setiap file swap yang berbeda, dan kemudian tulis hasilnya ke file sementara. Sekarang muat file dan jalankan :diffthis
di setiap file, buat perubahan yang Anda inginkan, tulis kembali ke file asli, dan hapus file sementara dan tukar.
Perintah yang berguna:
:swapname
: dapatkan nama yang digunakan vim untuk file swap untuk buffer saat ini ( :h :swapname
)
:recover
: memulihkan file yang dipilih, sama seperti ketika Anda memulai vim dan tekan R( :h :recover
)
Lihat bantuannya:
Vim memiliki seluruh bagian dari manual user pada pemulihan: :usr_11.txt
referensi bantuan Vim pada swap file: :h swap-file
, h recovery
Bantuan pada pilihan direktori (untuk menetapkan lokasi file swap)::h 'directory'
Sunting: Contoh yang dimodifikasi untuk pengaturan direktori, sebagaimana ditunjukkan dalam komentar oleh @B Layer