Apa tujuan dari swap file?

74

Ketika saya mengedit file, Vim cenderung membuat file bernama , yang menurut saya mengganggu. Dari , saya melihat bahwa opsi menekan pembuatan file swap..filename.swpvim -h-n

Apakah ada arahan vimrc yang dapat saya gunakan untuk menonaktifkan file swap secara default?

Apa tujuan dari swap file, dan fungsi apa yang akan saya lewatkan dengan menekannya?

200_sukses
sumber
FWIW, saya menemukan file swap juga mengganggu, dan untuk sementara saya mencoba menggunakan noswapfileseperti yang disarankan di bawah ini. Saya akhirnya menyerah dan mematikannya, karena ternyata manfaatnya lebih besar daripada gangguan - buuuuuut, saya sebenarnya tidak ingat apa yang meyakinkan saya untuk mengembalikan penggunaan file swap. Mungkin komputer saya mogok dan saya tidak dapat mengembalikan beberapa file yang hilang, yang mungkin sepele dengan file swap dihidupkan.
Kyle Strand

Jawaban:

89

Alasan untuk bertukar file

Swap file menyimpan perubahan yang Anda buat pada buffer. Jika Vim atau komputer Anda mogok, mereka memungkinkan Anda untuk memulihkan perubahan itu.

Swap file juga menyediakan cara untuk menghindari beberapa instance Vim dari mengedit file yang sama. Ini dapat berguna pada sistem multi-pengguna atau hanya untuk mengetahui apakah Anda memiliki Vim lain yang sudah mengedit file.

Menonaktifkan file swap

Jika Anda ingin menonaktifkan pembuatan file swap sepenuhnya (yang tidak saya sarankan), maka Anda dapat menambahkan set noswapfileke file .vimrc. Ini menetapkan nilai global opsi. Anda kemudian dapat menimpanya untuk buffer tertentu dengan menggunakan :setlocal swapfilesaat menjalankan Vim.

Mengatur file swap

Jika masalah Anda lebih tentang file tambahan yang tersebar di seluruh sistem file Anda, maka Anda dapat menggabungkan semua file swap di satu tempat. Misalnya, buat ~/.vim/tmpdirektori lalu tambahkan

set directory^=$HOME/.vim/tmp//

untuk Anda .vimrc. The 'directory'pilihan berisi daftar direktori yang Vim akan gunakan untuk mencoba dan menyimpan file swap.

The ^=sintaks untuk :setprepends nama direktori ke kepala daftar, jadi Vim akan memeriksa direktori yang pertama.

Di //akhir nama direktori memberitahu Vim untuk menggunakan path absolut ke file untuk membuat file swap sehingga tidak ada tabrakan antara file dengan nama yang sama dari direktori yang berbeda.

Perhatikan bahwa ini akan mencegah Vim memperhatikan ketika ada banyak pengguna yang mencoba mengedit file yang sama. Karena file swap tidak di direktori yang sama dengan file asli, Vim pengguna lain tidak akan tahu tentang file swap dan tidak akan memperingatkan mereka bahwa file itu sudah diedit.

jamessan
sumber
4
Apa manfaat dari menukar file lebih dari persisten-undo sekarang setelah beberapa saat?
alpha_989
Saya menggunakan vim-auto-save. Tidakkah ini mencemaskan kebutuhan untuk menukar file?
Kevin
@Kevin Tergantung. Jika plugin menyebabkan save dalam setiap skenario yang Vim akan menuliskan swapfile, maka mungkin. Kalau tidak, masih akan ada periode di mana buffer tidak disimpan dan swapfile dapat membantu.
jamessan
@ alpha_989 Mereka saling melengkapi. Swapfile memungkinkan Anda untuk memulihkan perubahan yang belum disimpan. File persistent-undo memungkinkan Anda untuk menelusuri riwayat undo di seluruh sesi Vim, tetapi file tersebut hanya ditulis saat Anda menyimpan.
jamessan
Adakah metode pengaturan vim no swap untuk satu contoh saja? misalnya vim temp.txt --some-command-that-disable-swap? Kasus penggunaan saya adalah beberapa pengamat akan terus mengawasi setiap perubahan dalam direktori, jadi hanya pada saat itu saya ingin menonaktifkan swap untuk mencegah tabrakan.
Ng Sek Long