19

undoヒットせずにファイルからvimファイルを復元するにはどうすればよいundoですか?

テキストを追加するときに保存したvimファイルがありました。次に、ファイルの内容を空にする python コマンドを実行すると、ファイルのファイルに含まれるファイルの単語の一部が表示され.un~ます。ファイルを元に戻そうとすると、と表示されますAlready at latest change。スワップ ファイル ディレクトリにスワップ ファイルが見つかりません。

4

4 に答える 4

18

他の回答が指摘しているように、vim はコンテンツ全体ではなく、元に戻すファイルに差分のみを保持しているように見えるため、vim の元に戻すファイルからファイル全体を回復することはできません。(スペース効率が良いので、これは非常に理にかなっています。)

ただし、できることの1 つは、元に戻すファイルから可能なことを抽出することです。

$ strings <undo-file>

出力はきれいではありませんが、あなたにとって価値のあるものを見つけることができます.

于 2018-10-23T12:52:43.747 に答える
14

できません。元に戻す情報は、ファイルの内容に関する Vim の最後の知識にリンクされています。それらが対応しなくなると、Vim は変更を再適用できなくなります。これは次の場所に文書化されてい:help undo-persistenceます。

Vim は、元に戻すファイルが書き込まれたファイルと同期されていないかどうかを (ファイルの内容のハッシュを使用して) 検出し、元に戻すファイルが書き込まれた後にファイルが変更されたときにそれを無視して、破損を防ぎます。

最善の方法は、元に戻すファイル内の認識可能なビットを手動でサルベージすることです。たとえば、16 進エディタや Vim のバイナリ モードを使用します。

于 2013-09-05T10:37:00.323 に答える
7

元に戻すファイルには、1 回の変更で変更されたテキストしか含まれていないため、正確には不可能です。ある時点でファイルをリロードした場合、元に戻すファイルにはそのための完全なバッファーが含まれている必要があり、そこから開始して理論的にファイルを回復できます (元に戻す状態を経ることにより)。

これについては、vim_use メーリングリストのこちらこちらで以前に書いたことがあります (このメーリングリストには、元に戻すファイルを強制的に読み取るためのパッチも含まれています)。

vim にパッチを適用して、少なくとも一部のデータを回復できるかどうかを確認できます。

于 2013-09-07T12:05:37.903 に答える