回答:
vim -r .swp
これは回復モードになり、詳細情報を提供します。これがあなたの望むものだと思います。
.swX
-保存されていないファイルとのセッションが強制終了/クラッシュ/何か他の悪いことが起こった場合、ファイルは残されます。また、Vimセッションで保存されていないバッファーが開いている間も存在します。vim -r
これらの一時ファイルを読み取り、コンテンツを再作成します。回復したら、通常どおり保存します(例:):w newfilename
。
.swpを復元するために元のファイルを用意する必要はありません。存在するかのようにファイルを開くだけです。vimは、拡張子が.swpのファイルを探し、それを回復することを提案します。
例えば:
$ ls -a
. .. .test.txt.swp
$ vim test.txt
[...]
Swap file ".test.txt.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:
Rを押して回復し、:wqファイル
編集:.swpファイルには、ファイルに加えられた変更のみが含まれていることに注意してください(コメントを参照)。つまり、ファイルの最新のコピーをバックアップから取得し、vimを使用して最新の変更を回復する必要があります。ファイルのバックアップコピーがない場合は、本当に運が悪いです。
The original file is no longer needed for recovery.
:preserve
を:set cpoptions=...&
残し、どちらかからの回復を提案します。を使用しvim -r <file>
て、.swpまたは.swoを選択できます。さらに編集すると、.swn、.swmなどが生成され、それまでのスワップの部分的な合計のように見えます。好みのバージョンに戻して編集(〜= fork)または保存(〜= stash)できます。最終的には、スワップファイルのtar圧縮、バックアップのデーモン化などを行うことができます。大きなファイルに関しては、詳細が間違っている可能性があります。これが余分なスワップファイルにどのように影響するかわかりません。
vimを使用して元のファイルを開き、回復オプションを選択します。
Vegar WesterlundとHeptiteのコメントを読んだ後、vimが.swpファイルから回復するために元のファイル(またはバックアップ)が必要になるポイントを知りたいと思いました。これが何をしたかです:
975行のファイルを開き、949行で編集(.swp
ファイルの作成)してプロセスを強制終了し、元のファイルを削除しました。$ vim Original_File
.swpから回復するかどうかを尋ねられました»>はい。実際に復元されたのは、最初の68行と最後の34行(編集の8行上から開始)だけです。
その後、小さなファイルでテストを繰り返しました。20行から200行まで、.swpファイルには元のコンテンツが100%含まれていました。しかし、300行では、最初の68行と最後の18行(編集の2行上から開始)だけが.swpに含まれていました。
結論として、vimは常に.swpファイルにファイルの「ヘッダー」と「ボトム」を保存することを知っておくと良いでしょう。たぶん、.swpに含める行数を制御する設定がありますか?