Jawaban:
Tidak ada opsi :help 'autosave'
bawaan , meskipun (dalam todo.txt) merujuk pada deskripsi tentang apa yang bisa dilakukan opsi semacam itu.
Salah satu cara yang mungkin untuk mengimplementasikan ini adalah dengan menggunakan CursorHold
acara perintah otomatis . Peristiwa ini dipicu ketika pengguna belum menekan tombol selama 'updatetime'
milidetik.
autocmd CursorHold * update
The :update
perintah hanya menghemat buffer jika dimodifikasi. Jika Anda juga menginginkan ini terjadi saat mode insert aktif, CursorHoldI
dapat ditambahkan ke daftar acara.
autocmd CursorHold,CursorHoldI * update
Alternatif lain adalah 'autowrite'
opsi, yang akan menyimpan buffer sebelum menjalankan perintah eksternal (berguna untuk menyimpan sebelum menjalankan :make
) atau beralih ke buffer yang berbeda.
Vim memang memiliki fitur simpan otomatis, tetapi menyimpannya ke file "pemulihan".
Ketika Anda mengedit dokumen, misalnya MyFile.txt
vim akan membuat file revovery .MyFile.txt.swp
. Jika sistem Anda mogok, atau sesi Anda mati, maka Anda dapat menyambung kembali, dan memulihkan dari tempat Anda tinggalkan, dengan mengetik:
vim -r MyFile.txt
Ini akan membuka file untuk diedit, dan memulihkan perubahan terakhir yang Anda buat.
Anda kemudian dapat menyimpan versi yang dipulihkan dengan cara biasa :w
.
Sayangnya, ketika Anda keluar dari vim, itu akan meninggalkan .MyFile.txt.swp
sekitar, dan Anda harus menghapusnya secara manual:
rm .MyFile.txt.swp
Lihat halaman Man "Pemulihan" Juga Bab 11
:wq
atau :q!
atau ZZ
atau dll.), Swap file secara otomatis harus dihapus.
Saya membuat plugin vim-autosave yang menggunakan fitur Vim 8 dari Timers untuk secara berkala menyimpan buffer Anda.
Saya membuat Vim saya menyimpan semuanya setiap kali fokus hilang.
autocmd FocusLost <your-patterns-here> silent! wall
Pola saya cukup panjang dan saya menggunakannya dalam beberapa autocmds tetapi untuk kelengkapannya seperti ini:
if exists(':keeppatterns')
let s:keeppatterns = 'keeppatterns '
else
let s:keeppatterns = ''
endif
augroup AutoSaveGroup
" :help file-pattern has some info,
" but some of it is is buried in the PATTERNS section of usr_40.txt
let s:autoPattern = "*.{c,h,[ch]pp,[acjt]s,inl,cg,cgfx,fx,py,bat,cmd,jam,vim,yml,yaml,vsprops,erb,rb,html,htm},SCons*,*vimrc"
autocmd!
execute "autocmd FocusLost" s:autoPattern "silent! wall"
execute "autocmd BufWritePre" s:autoPattern s:keeppatterns . 'call FixFormatting(expand("<afile>"))'
execute "autocmd FileChangedRO" s:autoPattern "silent !p4 edit %:p"
execute "autocmd FileChangedRO" s:autoPattern "write!"
autocmd FocusLost *.txt silent! wall
augroup END
Seperti yang telah ditunjukkan orang lain, vim memiliki file swap (.swp) yang akan dibuat di mana pun file asli Anda, tetapi dalam file .vimrc Anda, Anda dapat mengatur direktori .swp.
Anda harus membuat direktori dengan mkdir
dan kemudian mengatur .vimrc Anda ke lokasi itu.
set backup " make backup files
set backupdir=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp
The vim-kerja plugin memiliki fitur yang cukup disesuaikan auto-save yang mungkin sesuai dengan kebutuhan Anda. Secara default, ini memungkinkan penyimpanan otomatis ketika dalam sesi ruang kerja (fitur utamanya), tetapi Anda dapat mengaturnya untuk selalu menyimpan otomatis jika hanya itu yang Anda cari ( let g:workspace_autosave_always = 1
).
Cobalah untuk menyimpan buffer setiap kali teks diubah:
autocmd TextChanged,TextChangedI <buffer> silent write
Ini bekerja untuk saya.