このメッセージは、保存していない可能性のあるテキストが失われないようにする場合、実際に非常に重要です。それはすべきではない迷惑とみなされる、とすべきではない、あなたが急いでスワップファイルまたは構成を削除させvim
、それなしで実行します。
あなたの編集を持つ任意のファイルはvim
、対応するスワップファイルを持っていますあなた編集しながら、vim
変化を追跡するために使用しています。ファイルの編集を終了vim
すると、対応するスワップファイルは自動的に破棄されます。したがって、スワップファイルの存在、および元のファイルの上に上書きしようとする試みは、考慮と適切なアクションの原因となるはずです。
メッセージ(E325: ATTENTION Found a swap file
)に表示される2つのシナリオは、実際には非常に一般的です:(1)別のvim
プログラムが、編集しようとしているのと同じファイルを編集している(実際には別の人である可能性があります-この場合、実際には意味がありません)スワップファイルをやみくもに削除する-または、別のターミナルウィンドウまたはタブにいる可能性があります)、または(2)前のvim
セッションがクラッシュした(ほとんどの場合、これはリモートで編集しているときに発生し、ネットワークセッションは切断されます) vimセッションが正常に終了せず、.swp
ファイルが残っている場合;この2番目のシナリオの別の例は、アクティブまたはバックグラウンドvim
セッションがあったターミナルウィンドウまたはタブを誤って閉じた場合です)。
このメッセージに出会ったとき、私は通常、それぞれがいくつかのタブを持ついくつかのターミナルウィンドウで操作するため、別のターミナルウィンドウまたはタブでこのファイルを編集しているかどうかを考えます。
別の場所で編集していることに気付き、そこに戻ることができる場合、この追加セッションのq
キーを押し(Q)uit
、元のvim
セッションを介して編集に戻ります。
よくわからない場合は(Q)uit
、実行してjobs
からvim
、まったく同じ端末で実行しているかどうかを確認します。何も表示されない場合は、他の場所(つまり、別のターミナルウィンドウまたはタブ)でps -ef | grep vim
実行してvim
いるかどうかを確認するために実行します。ポイントは、私は常に元のvim
セッションを介して編集を再開しようとすることです。
私は、元の編集セッションに戻ることができないことを確信し、私はまだ、次のオプションを提示していた場合、私は押しr
に(R)ecover
。
Swap file ".notes.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort:
を押すとr
、次のようなメッセージが表示されます。
Swap file ".notes.swp" already exists!
"notes" 18L, 46C
Using swap file ".notes.swp"
Original file "/private/tmp/notes"
Recovery completed. Buffer contents equals file contents.
You may want to delete the .swp file now.
Press ENTER or type command to continue
一方、シェルプロンプトが表示されているため、これらのオプションに直面しなくなっvim
た-r
場合は、次のようにオプションを使用して実行します。
vim -r notes
結果のメッセージは次のようになります。
Using swap file ".notes.swp"
Original file "/private/tmp/notes"
Recovery completed. Buffer contents equals file contents.
You may want to delete the .swp file now.
Press ENTER or type command to continue
いずれにしても、を押しENTER
て続行すると、ファイルが表示されます。
注:Vimが見つけたものに疑問がある場合、エラーメッセージが表示され、「???」の行が挿入されます。テキスト内。リカバリ中にエラーメッセージが表示された場合は、ファイルで「???」を検索してください 何が悪いのかを見るために。必要なテキストを取得するには、カットアンドペーストすることをお勧めします。
最も一般的な発言は「??? LINES MISSING」です。これは、Vimが元のファイルからテキストを読み取れないことを意味します。これは、システムがクラッシュし、元のファイルの一部が保存されなかった場合に発生する可能性があります。
そうは言っても、私はそれらの???
マークを見たことがないので、これは本当にまれな出来事であるに違いない。
次に、コンテンツを別のファイルに保存(書き込み)します(通常、元のファイル名の最後に「2」を追加するだけです)。
:w notes2
次に、このvim
セッションを強制終了します。
:q!
次に、2つのファイルを比較します。
diff notes notes2
diff
が何も返さない場合、それは違いがないことを意味し、スワップファイルと2番目のファイルの両方を削除しても安全です。
rm .notes.swp notes2
この時点で、元のファイルを開き、問題がなかったかのように進みます。
vim notes
diff
が何かを返す場合、元のファイル(スワップファイル経由)に変更があり、recoverのおかげで2番目のファイルに保存されています。
これらの変更は2番目のファイルにキャプチャされるため、スワップファイルを削除して、元のファイルを2番目のファイルで上書きしても安全です。
rm .notes.swp
remove .notes.swp? y
mv notes2 notes
overwrite notes? (y/n [n]) y
この時点で、元のファイルを開き、問題がなかったかのように進みます。
vim notes
これは多くの作業のように思えますが、ワークフローに慣れると、最大で20秒かかります。