編集中のファイルがクラッシュした時はどうしたらいいのか
書いてたブログ記事が消えて、自らの不注意に起因する半ば八つ当たり的な怒りをワールドワイドに発信する哀れな男の図(プライバシー的なものに配慮して、画像にモザイク処理を施してあります。)
こうはなりたくないものですね。
スワップファイルとバックアップファイル
vimは編集時に、「.swp」または「~」がファイル名末尾についているファイルを勝手に作成します。これはそれぞれ「スワップファイル」、「バックアップファイル」と呼ばれるものです。
スワップファイル
.swpファイルはスワップファイルと呼ばれています。
スワップファイルはアプリケーションのクラッシュに備えて、 vimエディタでの編集開始時に作成され、編集後に削除される編集情報の記録ファイルです。
スワップファイルを使用していれば、vimエディタがシステムエラーで強制終了しても、 保存前のデータが失われずに済みことがあります。
http://nanasi.jp/articles/howto/file/seemingly-unneeded-file.html
スワップファイルは編集開始と共に作成され、編集終了時に削除されます。ということは編集中にvimが強制終了した場合、編集終了までいってないためにスワップファイルは残るため、そこからリカバリが可能なわけです。
リカバリは以下のコマンドで可能。
:recover
バックアップファイル
ファイル名に「~(チルダ)」が付いたファイルはバックアップファイルです。 ファイルを保存時に、変更前のファイルをもとにして作成されます。
ファイルの編集に失敗しても、このバックアップファイルを使用して、 一つ前の世代まではファイルの状態を戻せます。バックアップファイルを使用して一つ前の世代まで戻す場合は、
vimエディタ側でのサポートは特に無いので、手作業でリカバリー作業を行います。
- 現行のファイルを削除する。
- バックアップファイルをリネームする。
http://nanasi.jp/articles/howto/file/seemingly-unneeded-file.html
:set backupの場合はバックアップファイルはそのまま保存されます。
が、:set writebackup 且つ :set nobackupが設定されていた場合はバックアップファイルはファイルの保存が成功した場合は削除されます。動作の組み合わせに付いては以下のvimのヘルプ抜粋参照。
'backup' | 'writebackup' | action |
---|---|---|
off | off | no backup made |
off | on | backup current file, deleted afterwards (default) |
on | off | delete old backup, backup current file |
on | on | delete old backup, backup current file |