Setiap kali saya menghentikan sesi di vim dengan kehilangan koneksi saya, saya agak dipenuhi dengan dred (namun saya terus menggunakan vim ... saya benar-benar seorang masokis) karena ketika saya membuka file saya lagi tumpukan tumpukan swap- file sedang menunggu untuk mengambil kesempatan menghancurkan pekerjaan saya. Apa praktik terbaik untuk bekerja dengan file swap vim? Apakah Anda hanya memilih yang terbaru? Jika file berfungsi seperti yang Anda harapkan, apakah Anda hanya menghapus file swap? Bagaimana Anda menyingkirkannya?
14
Jawaban:
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:
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: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
sumber
exec
...set directory^=$HOME/.vim/swap//
berfungsi dengan baik selama$HOME
merupakan variabel lingkungan yang diinisialisasi. Lihat:h expand-env
. Juga bekerja dengandictionary
,undodir
danbackupdir
untuk beberapa nama.Secara pribadi, saya telah menonaktifkan file swap dan cadangan, karena cenderung membuat file swap dan file cadangan di mana-mana dan sering menimbulkan konflik. Persisten-undo Vim jauh lebih dapat diandalkan dan bebas kesalahan.
Vim saat ini telah terus-menerus diurungkan, ini merupakan metode cadangan yang jauh lebih bagus. Setiap kali, Anda menekan Esc, status file saat ini ditangkap.
Anda dapat menggunakan
:undolist
, atau plugin seperti gundo , atau undo-tree untuk menelusuri riwayat undo Anda.Untuk menggunakan vim dengan cara ini:
Di shell:
Di Vim
Untuk mematikan file swap:
:set noswapfile
sumber
'writebackup'
menangani masalah lain). Mengaktifkan pembatalan yang persisten tidak akan membantu jika komputer Anda mogok. Anda dapat berdebat bahwa menukar file tidak perlu untuk alasan lain (stabilitas OS modern, keberadaan UPS), tetapi Anda belum melakukannya dalam jawaban ini. 2. pengaturan'undodir'
tidak memungkinkan undo persisten! Anda perlu mengatur'undofile'
ini