2012-11-26 11 views
7

私はそれが原子になるように設計されていると思うし、vimが一時ディレクトリに保存してから、古いファイルまたは新しいバージョンが存在することを確認するためにmv一時ファイルを上書きするたとえ電源が途中でオフになっても、ファイルが1つまたは全くありません。vimはどのようにファイルを保存しますか?

誰でも詳細はありますか?

答えて

4

一般的なアプローチについては正しいですが、詳細については、:help backupを参照してください。

設定を使用してアプローチを微調整できます。これは、ファイルの改行に対処するために、ハードラインのファイルを処理する場合や、inotifyのようなAPIを使用する場合に重要です。

さらに、スワップファイル(:help swap-file)と永続的な元に戻す(:help persistent-undo)は、ディスクがクラッシュした場合でもデータ損失を回避するのに役立ちます。

7

これはいくつかのオプションの値によって異なります。

これに影響する主なオプションはbackupcopyです。他のシステムでは、デフォルトでyesになります。デフォルトはautoです。 noに設定されている場合にのみ、あなたの質問のように書き込みが行われることが保証されます。 yesに設定すると、代わりにバックアップコピーを作成した後、元のファイルの内容が上書きされます。 autoに設定すると、属性が渡され、ファイルがリンク(シンボリックリンクまたはハードリンクのいずれでもない)であることが検出された場合、質問と同様に動作します。リンクを解除するオプションの追加値があります。そのオプションのヘルプを参照してください。

これに影響を与えるその他のオプションは、backup,writebackupです。バックアップのために少なくとも1つは設定する必要があります。バックアップが行われていない場合は、元のファイルの内容が上書きされます。 writebackupオプションは、vimがサポートされてコンパイルされている限り、デフォルトでオンになります。また、バックアップが行われないファイルパターンのリストを指定するbackupskipオプションもあります。これらのパターンのいずれかがファイルと一致する場合、バックアップは行われず、元のファイルの内容が上書きされます。