Vimは自動保存されますか?


13

から:help swap-file

スワップファイルを更新する

スワップファイルは、200文字を入力した後、または4秒間何も入力しなかったときに更新されます。これは、バッファが変更された場合にのみ発生し、移動しただけでは発生しません。常に最新の状態に保たれない理由は、これにより通常の作業が非常に遅くなるためです。'updatecount'オプションを使用して200文字カウントを変更できます。「updatetime」オプションで時間を設定できます。時間はミリ秒単位で指定されます。スワップファイルへの書き込み後、Vimはファイルをディスクに同期します。特に忙しいUnixシステムでは、これには時間がかかります。これが必要ない場合は、 'swapsync'オプションを空の文字列に設定できます。ただし、仕事を失うリスクは大きくなります。一部の非UNIXシステム(MS-DOS、Amiga)では、スワップファイルはまったく書き込まれません。

これから、いくつか質問があります。

  1. これは、Vimが時々作業を自動保存するということですか?

  2. 「スワップファイルへの書き込み後、Vimはファイルをディスクに同期します。」これは何を意味するのでしょうか?これは、最初にメモリに書き込まれ、次にディスクに書き込まれるファイルを参照していますか、それとも別のものですか?

  3. クラスのメモを取っているとしましょう:書くのが速いので、挿入モードを終了する必要はほとんどありません。しかし、作業を保存するためだけに何度もNormalに変更します。これを行う必要がありますか、または挿入モードを終了しなくても、Vimは私の作業のほとんどが保存されていることを確認しますか?

回答:


9
  1. はい、スワップファイルに保存します。

簡単なテストを行って、この感触をつかむことができます。ディレクトリに移動します。言ってvim notest.txt、テキストを書いてください。ファイルを保存する必要さえありません。

作業ディレクトリにファイルをリストすると、スワップファイルが見つかります。別のディレクトリ(たとえば、「notes.txt」ファイルがない場所)にコピーしますvim notest.txt

既存のスワップ、変更中のスワップ、および読み取り専用として開く、回復などのオプションに関するメモが表示されます。回復と出来上がりを選択してください。ファイルの「コピー」。

  1. はい、スワップはメモリに保持されます。

Vimはファイルを読み込むと、RAMに追加します。これは、既存および新規(まだ保存されていないファイル)の両方に対するものです。スワップが保存されると、ディスクにフラッシュされます。HDD。RAMから。

  1. はいといいえ。

デフォルト設定は、ほとんどの作業が保存されます。これは、200文字が入力されるたび、または4秒間停止する場合です。私も信頼保存するスワップファイルを、私が好きな私は、不安定なシステムによわかっているときに私の仕事を保存します。しかし、非常に不運で、非常に重要な文章を書いた直後にホスティングシステムがパニックに陥らない限り、作業を続けることはかなり確実です。

要するに、講義が終わったら保存すれば十分です。クラスの最中に何らかの理由でシステムが停止する必要がある場合、作業はスワップ内にあります。

もちろん、非常に不運な場合は、スワップファイルの書き込み中にクラッシュが発生する可能性があります。その結果、スワップファイル破損する可能性があります。これを一度も経験したことがなく、ファイルのどの部分がめちゃくちゃになっているかはわかりませんが、考えてみる価値はあります。スワップファイルは(より良い言葉がないため)バイナリであるため、プレーンテキストファイルよりも壊れやすいと考えられます。


サイドノートとして。少なくともスワップに作業ディレクトリを使用する場合、スワップファイルはリカバリに関しては場所に依存しません。そのように、あなたがすることができますコピーし、新しい場所にスワップファイルをし、回復のファイルを新しいファイル。ファイル名はスワップにハードコードされていることに注意してください。そのため、あなたは言うことができません:

cp .foo.txt.swp .bar.txt.swp

そして

vim bar.txt

のスワップファイルが必要foo.txtです。

あなたが非常に興味があるなら、あなたはすることができます(* nixで):

xxd -s 108 -l 800 -ps .foo.txt.swp | xxd -r -p

元のファイルのパスを(いくつかの癖を付けて)取得します。表示されるように、フルパスが追加されます。例:

~user/blah/blah/notes.txt

ただし、スワップチェックではベース名のみが使用されます。

その点で、vim -rオプションをチェックアウトすることもできます-これは、現在のディレクトリと下位ディレクトリのスワップファイルをリストします。:h crash-recoveryサブトピックで参照してください。


0

私にとっては、テキストが変更されるたびにバッファを保存しても構いません:

autocmd TextChanged,TextChangedI <buffer> silent write

ここで見つけまし。わたしにはできる。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.