Menonaktifkan pembuatan file swap di vim

216

Apakah ada cara untuk menonaktifkan .swppembuatan file di vim? atau paling tidak buat semuanya di satu tempat sehingga saya bisa menemukan dan menghapusnya dengan mudah.

Saya menemukan mereka sangat menjengkelkan ketika saya menyalin direktori induk sambil mengedit pada saat yang sama. Tentu saja saya tahu bahwa saya dapat menggunakan find -exec untuk menemukan dan menghapusnya. Tetapi saya ingin solusi yang lebih praktis.

Nadia Alramli
sumber

Jawaban:

255

Untuk menonaktifkan file swap dari dalam vim, ketik

:set noswapfile

Untuk menonaktifkan file swap secara permanen, tambahkan di bawah ini ke ~/.vimrcfile Anda

set noswapfile

Untuk lebih jelasnya lihat dokumen Vim di swapfile

dwc
sumber
6
Tukar file dengan baik jika editor Anda rusak (pemadaman listrik dll.), Perlu diingat.
koonse
1
Opsi lain masih menggunakan file swap, tetapi tinggalkan di memori, sehingga tidak akan terus menulis hard disk. Ini tidak dapat melindungi Anda dari kehilangan file selama pemadaman, tetapi jika Anda membuka file yang sama dalam vim anther, itu akan memberi tahu Anda segera. Perintahnya adalah: set directory = / dev / shm
webbertiger
jawaban trusktr memungkinkan Anda untuk menjaga keuntungan dari menukar file sambil mengatasi kekhawatiran OP.
jpaugh
Dari dalam vim Anda juga dapat menonaktifkan swapfile saat membuka file::noswapfile edit /path/to/file
Torkel Bjørnson-Langen
Filosofi pribadi saya tentang kehilangan data adalah DBAB dan sering disimpan ...
Samy Bencherif
156

Setel variabel berikut di .vimrc atau / etc / vimrc untuk membuat vim put swap, backup, dan undo file di lokasi khusus alih-alih direktori kerja file yang sedang diedit:

set backupdir=~/.vim/backup//
set directory=~/.vim/swap//
set undodir=~/.vim/undo//

Menggunakan garis miring ganda di jalur memberitahu vim untuk mengaktifkan fitur di mana ia menghindari tabrakan nama. Sebagai contoh, jika Anda mengedit file di satu lokasi dan file lain di lokasi lain dan kedua file memiliki nama yang sama, Anda tidak ingin tabrakan nama terjadi di ~ / .vim / swap /. Jika Anda menentukan ~ / .vim / swap // dengan dua garis miring, vim akan membuat file swap menggunakan seluruh jalur file yang sedang diedit untuk menghindari tabrakan (garis miring pada jalur file akan diganti dengan simbol persen%).

Misalnya, jika Anda mengedit /path/one/foobar.txt dan /path/two/foobar.txt, maka Anda akan melihat dua file swap di ~ / .vim / swap / yang dinamai% path% satu% foobar.txt dan% path% dua% foobar.txt, masing-masing.

trusktr
sumber
Anda juga dapat menambahkan bahwa beberapa waktu file cadangan yang disimpan mungkin menyelamatkan kulit devs
Bartek Skwira
Komentar: (bukan kritik), Tampaknya bagus terutama untuk pengembangan karena untuk membaca file dan mengedit kecil atau membuat catatan yang tidak penting yang merupakan bagian besar penggunaan vim bagi banyak orang, sepertinya pekerjaan pembukuan ekstra lebih baik ditinggalkan. Saya pribadi lebih suka untuk semua pekerjaan daripada tidak memiliki swap atau cadangan otomatis lainnya. Jika saya benar-benar perlu mengembangkan sesuatu, saya lebih suka memiliki kerangka kerja tingkat lebih tinggi untuk melindungi saya, lebih disukai dengan kontrol versi kode dll.
j riv
@LelaDax Benar, sebagian besar waktu file-file ini kebanyakan tidak berguna karena saya menggunakan git untuk semua kode sumber saya. Dalam kesempatan yang jarang (seperti tabrakan) mereka berguna meskipun. Namun sebenarnya, sejarah undo yang saya gunakan banyak. Jauh lebih mudah dinavigasi dengan cepat daripada memeriksa git yang berkomitmen untuk melihat riwayat sebelumnya. gundo membuatnya menyenangkan dan mudah dinavigasi pohon undo. Saya bisa hidup tanpa swap dan file cadangan.
trusktr
26
Hanya FYI untuk orang yang baru (seperti saya haha ​​...) Anda harus pergi ke ~ / .vim / dan buat direktori sendiri. Tidak akan otomatis membuatnya untuk Anda.
Agustus
1
Anda juga dapat menulis beberapa kode di vimrc Anda untuk secara otomatis membuat folder untuk Anda, yang telah saya lakukan di tambang. Jadi, pada sistem baru, saya hanya mendapatkan vimrc saya, dan itu mengurus sisanya.
trusktr
42

Saya menemukan jawabannya di sini :

vim -n <file>

membuka file tanpa swapfile.

Sebagai tambahan:

set dir=/tmp

di .vimrcbuat swapfile di /tmp.

markus_b
sumber
Bagaimana dengan *.ext~file cadangan? Apakah ada opsi baris perintah untuk menonaktifkannya juga?
Salman von Abbas
Itu sangat berguna untuk file besar sekali saja! Terima kasih.
Felipe Alvarez
28

di sini adalah pengaturan cadangan ~ / .vimrc pribadi saya

" backup to ~/.tmp 
set backup 
set backupdir=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp 
set backupskip=/tmp/*,/private/tmp/* 
set directory=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp 
set writebackup
cpjolicoeur
sumber
13

Saya setuju dengan mereka yang mempertanyakan mengapa vim membutuhkan semua hal 'pemulihan bencana' ini ketika tidak ada editor teks lain yang peduli dengannya. Saya tidak ingin vim membuat file tambahan APAPUN dalam direktori file yang diedit ketika saya mengeditnya, terima kasih banyak. Untuk itu, saya memiliki ini di saya _vimrcuntuk menonaktifkan file swap, dan memindahkan file 'cadangan' yang menjengkelkan ke direktori Temp:

" Uncomment below to prevent 'tilde backup files' (eg. myfile.txt~) from being created
"set nobackup

" Uncomment below to cause 'tilde backup files' to be created in a different dir so as not to clutter up the current file's directory (probably a better idea than disabling them altogether)
set backupdir=C:\Windows\Temp

" Uncomment below to disable 'swap files' (eg. .myfile.txt.swp) from being created
set noswapfile
Jez
sumber
9
Saya pikir fakta bahwa editor lain tidak peduli dengan hal itu mencerminkan buruk pada editor lain lebih daripada itu mencerminkan buruk pada vi (m). Pilihan untuk membuat direktori yang sama sebagai tempat default untuk meletakkan file-file ini agak disayangkan, meskipun setidaknya sedikit dipertahankan. (misalnya, Di lingkungan multiserver, sangat lintas-mount, mungkin tidak jelas di mana menemukan file pemulihan saat Anda sangat membutuhkannya)
Domingo Ignacio
3
Penanganan swapfile Vim hanya mengerikan. Saya telah menggunakannya untuk memulihkan data yang hilang mungkin 5 kali. Tapi saya telah direpotkan untuk memulihkan swapfile sekitar 9.000 kali, yang selalu identik dengan file, atau lebih buruk lagi versi yang ketinggalan zaman. Ini mungkin fitur yang bagus jika proses pemulihan tidak terlalu buruk. recover.vim membantu sedikit, tetapi masih terlalu interaktif.
joeytwiddle
3
Teks Sublim memiliki disaster recovery. Aku menyukainya! Saya bahkan tidak perlu menyimpan file, ketika saya melanjutkan perubahan yang saya buat, simpan atau tidak, ditarik kembali.
leetNightshade
Saya memiliki perintah otomatis sederhana yang menulis semua perubahan segera setelah dibuat, membuat swapfile dan cadangan tidak berguna.
tbodt
2
@ TorkelBjørnson-Langen Ini mungkin salah saya untuk me-reboot mesin saya tanpa menutup semua sesi Vim saya, dan kemudian menjadi paranoid tentang file pemulihan yang benar-benar valid. Pokoknya saya mencoba untuk mendapatkan yang terbaik dari kedua dunia, dengan menulis sebuah plugin yang hanya memelihara swapfile ketika ada suntingan yang belum disimpan: vim-swap-is-awesome.vim
joeytwiddle
7

Anda dapat mengatur backupdir dan direktori ke null untuk sepenuhnya menonaktifkan file swap Anda, tetapi umumnya disarankan untuk hanya meletakkannya di direktori terpusat. Vim memastikan bahwa tidak ada collision nama atau semacamnya; jadi, ini adalah alternatif yang sepenuhnya aman:

set backupdir=~/.vim/backup/
set directory=~/.vim/backup/
monokrom
sumber
3
Anda harus menambahkan garis miring ganda //ke ujung jalur sehingga Anda dapat memodifikasi dua file dengan nama yang sama secara bersamaan.
Samuel O'Malley
Terima kasih, @ SamuelO'Malley. Apa yang dilakukan //?
monokrom
Lihatlah :help directoryjika Anda ingin membaca dokumen untuk ini. Double slash memberitahu vim untuk menyandikan path lengkap file ke dalam nama file swap, misalnya %home%sam%dotfiles%.gitignore.swp, bukan hanya .gitignore.swp.
Samuel O'Malley
3

Jika Anda memasukkan set directory=""file exrc Anda, Anda akan mematikan file swap. Namun, hal itu akan menonaktifkan pemulihan.

Info lebih lanjut di sini .

Brian Rasmussen
sumber
3

Jika Anda menggunakan git, Anda dapat menambahkan *.swpuntuk .gitignore.

Evan Hu
sumber
Saya pikir itulah yang paling dibutuhkan pengguna! Mematikan file swap adalah praktik yang buruk.
DenisKolodin
2

buat tidak ada file swap vim hanya untuk file tertentu

autocmd bufenter  c:/aaa/Dropbox/TapNote/Todo.txt :set noswapfile
zzapper
sumber
1
Atau untuk semua file dalam direktori tertentu, yang berikut ini tampaknya berfungsi (hanya pengujian singkat):autocmd bufenter c:/aaa/Dropbox/TapNote/* :set noswapfile
scottkosty
1

Bagi siapa pun yang mencoba mengatur ini untuk proyek Rails, tambahkan

set directory=tmp,/tmp

ke dalam Anda

~/.vimrc

Jadi file .swp akan berada di lokasi aslinya - direktori tmp (per proyek).

Valk
sumber