我相信它的設計是原子性的,我聽說vim會保存到一個臨時目錄,然後將臨時文件保存在舊文件中,以確保舊版本或新版本存在,而且永遠不會有一半一個文件或根本沒有文件,即使電源在保存中關閉。vim如何保存文件?
有沒有人有更多的細節?
我相信它的設計是原子性的,我聽說vim會保存到一個臨時目錄,然後將臨時文件保存在舊文件中,以確保舊版本或新版本存在,而且永遠不會有一半一個文件或根本沒有文件,即使電源在保存中關閉。vim如何保存文件?
有沒有人有更多的細節?
你是對的一般方法;欲瞭解更多信息,請參閱:help backup
。
您可以通過設置微調方法;當您處理強硬文件或使用類似的inotify對文件系統更改作出反應時,這一點非常重要。
此外,交換文件(:help swap-file
)和持久性撤消(:help persistent-undo
)可以幫助您避免任何數據丟失,即使在磁盤發生故障的情況下也是如此。
這是如何完成取決於幾個選項的值。
影響此選項的主要選項是backupcopy
,在unix系統上,默認爲yes
,在其他系統上默認爲auto
。只有當它被設置爲no
時,你才能確信寫操作將會像你的問題那樣完成。當設置爲yes
時,vim將在創建備份副本之後覆蓋原始文件內容。如果設置爲auto
,它將在問題中表現爲如果它檢測到可以傳遞屬性並且該文件不是鏈接(符號鏈接或硬鏈接)。此選項還有其他值可讓它斷開鏈接,請參閱該選項的幫助。
影響到此的其他選項是backup
,writebackup
。其中至少有一個必須設置備份才能生成。如果沒有備份完成,原始文件內容將被覆蓋。只要vim編譯時支持它,writebackup
選項默認爲打開。還有一個backupskip
選項,它指定了不需要備份的文件模式列表;如果其中一種模式與文件匹配,則不會執行備份,原始文件內容將被覆蓋。