私はそれが原子になるように設計されていると思うし、vimが一時ディレクトリに保存してから、古いファイルまたは新しいバージョンが存在することを確認するためにmv
一時ファイルを上書きするたとえ電源が途中でオフになっても、ファイルが1つまたは全くありません。vimはどのようにファイルを保存しますか?
誰でも詳細はありますか?
私はそれが原子になるように設計されていると思うし、vimが一時ディレクトリに保存してから、古いファイルまたは新しいバージョンが存在することを確認するためにmv
一時ファイルを上書きするたとえ電源が途中でオフになっても、ファイルが1つまたは全くありません。vimはどのようにファイルを保存しますか?
誰でも詳細はありますか?
一般的なアプローチについては正しいですが、詳細については、:help backup
を参照してください。
設定を使用してアプローチを微調整できます。これは、ファイルの改行に対処するために、ハードラインのファイルを処理する場合や、inotifyのようなAPIを使用する場合に重要です。
さらに、スワップファイル(:help swap-file
)と永続的な元に戻す(:help persistent-undo
)は、ディスクがクラッシュした場合でもデータ損失を回避するのに役立ちます。
これはいくつかのオプションの値によって異なります。
これに影響する主なオプションはbackupcopy
です。他のシステムでは、デフォルトでyes
になります。デフォルトはauto
です。 no
に設定されている場合にのみ、あなたの質問のように書き込みが行われることが保証されます。 yes
に設定すると、代わりにバックアップコピーを作成した後、元のファイルの内容が上書きされます。 auto
に設定すると、属性が渡され、ファイルがリンク(シンボリックリンクまたはハードリンクのいずれでもない)であることが検出された場合、質問と同様に動作します。リンクを解除するオプションの追加値があります。そのオプションのヘルプを参照してください。
これに影響を与えるその他のオプションは、backup
,writebackup
です。バックアップのために少なくとも1つは設定する必要があります。バックアップが行われていない場合は、元のファイルの内容が上書きされます。 writebackup
オプションは、vimがサポートされてコンパイルされている限り、デフォルトでオンになります。また、バックアップが行われないファイルパターンのリストを指定するbackupskip
オプションもあります。これらのパターンのいずれかがファイルと一致する場合、バックアップは行われず、元のファイルの内容が上書きされます。