38

なぜ自動保存してはいけないのか、スワップファイルなどがあるのか​​ 、自動保存しない理由について知りたくありません。

現在の作業ファイルを自動保存して、1秒ごとにvimに保存したいだけです。

どうすればこれを達成できますか?

4

4 に答える 4

69

これにより、テキストが変更されるたびにバッファーが保存されます。(ビム 7.4)

autocmd TextChanged,TextChangedI <buffer> silent write

于 2014-12-09T19:23:51.317 に答える
9

ファイルの読み取りを開始したら、バッファ変数を現在の時刻に設定します。

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 秒間操作を行わないと、スワップ ファイルに書き込まれます。スワップからの回復は非常に簡単で、何か問題が発生した場合の信頼性が高くなります。

于 2011-08-09T05:23:36.067 に答える