VIM (gvim/macvim) 在哪裡保存未儲存/未命名緩衝區的交換檔案? (如果確實如此的話)。
背景: 在整個半密集的研討會中,我在一個未命名/未保存的 MacVim 緩衝區中做筆記,這時 MacBook 電量耗盡並突然斷電(它沒有像通常那樣休眠/休眠)。
問題: 有人知道未儲存的工作是否有可能已儲存到交換(.swp)檔案或類似檔案中,可以恢復嗎?
系統詳細資訊: 特別是在 Mac OS X 10.5.8 上使用 MacVim 時會發生這種情況(但其他版本的可能復原提示也很有趣)。我還沒有重新啟動 MacVim,以防這樣做會啟動清理過程。
答案1
啟動 vim 並嘗試:
:recover <filename>
如果該文件從未有名稱,則只需:
:recover
這是你最好的選擇。有關交換文件和恢復的更多信息,請參閱:
:help usr_11
關於交換文件,通常它們保存在與正在編輯的文件相同的目錄中,但擴展名為 .添加了開頭以使其隱藏,並在末尾添加了 .swp,但可以通過以下方式將它們移動到其他地方:
:set directory=~/vimswap
或類似的。
看:
:help swap
對於所有細節。
然而,vim 交換文件與編輯的緩衝區不同,因此請務必閱讀那裡的內容以了解如何進行復原。
編輯: 回答問題的評論:
[...] 它似乎在您當前的工作目錄~/tmp、/var/tmp 和/tmp 中查找交換文件,在我的情況下,我總是有一個當前工作目錄集,這就是它保存的地方。– dsclementsen 2010 年 10 月 5 日 1:42
另外,請務必檢查 vim -r 命令列參數。這將列印出找到的所有交換文件及其位置。此外,它還會有很多額外的信息,例如日期/修改/用戶名/等等...– Neg_EV 2010 年 10 月 5 日 13:49
答案2
我在 Windows 10 上工作,但:recover
沒有找到交換文件。vim -r
列出了上次編輯會話(也從未儲存過)的名為 _.swp 的交換檔案。可以使用 進行恢復:recover _
。
答案3
答案是:到處都是。訣竅是找到合適的人。有些位於您的 /tmp 目錄中,但許多位於您的主目錄下。
也許有更有效的方法可以做到這一點,但是當我丟失一個未命名的檔案(在 MacBook 上)時,以下方法對我有用:
在主目錄中,搜尋備份檔案(需要幾秒鐘,並且可以變得更聰明):
find ./ -name ".s*" > findVimBackups.txt
開啟文件:
vim findVimBackups.txt
刪除不適合未命名檔案備份的檔案名稱:
:g!/\/\.s..$/d
:g/svn/d
現在我看到未命名備份檔案的位置清單。在每個目錄中,我運行以下命令,直到找到今天的檔案:
ls -ltra <directory>
我 cd 進入正確的目錄並打開 vim 並輸入 :recover 並選擇正確的備份。
答案4
我能夠在 win 10 機器上恢復我的文件,如下所示:
前往您上次開啟 vim 的目錄。對我來說,這是透過 win 10 工作列上的 vim 快捷方式。右鍵單擊 vim 圖標,再次右鍵單擊 vim 快捷方式並選擇“屬性”。將彈出一個對話框。該對話方塊中「開始於:」欄位中的值是我上次開啟 vim 的位置。對我來說,這個價值是%HOMEDRIVE%%HOMEPATH%
。前往 dos 命令控制台並呼叫命令echo %HOMEDRIVE%
並echo %HOMEPATH%
確定其位置。
檢查該目錄中所有 _.s* 檔案的上次修改日期。尋找上次修改日期與您上次開啟該文件的時間相符的文件。
打開vim。輸入:recover _filename_
位置檔案名稱是您在前面的說明中找到的文件。