なぜ自動保存してはいけないのか、スワップファイルなどがあるのか 、自動保存しない理由について知りたくありません。
現在の作業ファイルを自動保存して、1秒ごとにvimに保存したいだけです。
どうすればこれを達成できますか?
これにより、テキストが変更されるたびにバッファーが保存されます。(ビム 7.4)
autocmd TextChanged,TextChangedI <buffer> silent write
ファイルの読み取りを開始したら、バッファ変数を現在の時刻に設定します。
au BufRead,BufNewFile * let b:save_time = localtime()
最後の保存から十分な時間が経過したかどうかを確認し、経過していない場合は更新するイベントを設定します。
au CursorHold * call UpdateFile()
自動保存期間を秒単位で設定します。
let g:autosave_time = 1
必要に応じてファイルを保存する関数を定義します。
" save if needed / update the save_time after the save
function! UpdateFile()
if((localtime() - b:save_time) >= g:autosave_time)
update
let b:save_time = localtime()
else
" just debugging info
echo "[+] ". (localtime() - b:save_time) ." seconds have elapsed so far."
endif
endfunction
次に、保存時間を明示的にリセットするには:
au BufWritePre * let b:save_time = localtime()
vim 7.0以降では上記をテストしていません。また、CursorHold イベントは、このような短い自動保存期間には十分ではない可能性があります (記録時にもトリガーされません)。おそらくUpdateFile()
、CursorMoved も呼び出す必要があります。
また、スワップ ファイルの使用を検討してください。デフォルトでは、200 文字を入力するか、4 秒間操作を行わないと、スワップ ファイルに書き込まれます。スワップからの回復は非常に簡単で、何か問題が発生した場合の信頼性が高くなります。