1. 程式人生 > >vim交換檔案機制

vim交換檔案機制

之前經常遇到用vim開啟檔案時,出現選擇交換檔案的選項,今天花了點時間終於弄清楚了。大致是這樣的:

01vim交換檔案機制:比如使用者在編輯一個名叫“hehe.txt”的檔案,那麼vim會自動在當前檔案的父目錄下(可能不是執行vim命令時的當前目錄)建立一個名為“.hehe.txt.swap"的檔案,並且vim會定時或定量(後面有解釋)把當前正在編輯的檔案的內容儲存到交換檔案中去。如果vim正常退出了(使用者自己按q!,wq,ZZ等退出的),那麼它會刪除這個交換檔案,但是果vim意外退出了(如強行關掉正在執行這條vim命令的終端),vim就沒法刪除這個交換檔案,所以這個交換檔案就被儲存下來了。這個時候如果再次vim hehe.txt,就會出現vim的選擇交換檔案介面了。還要注意一點,如果hehe.txt本身已經有一個交換檔案了,那麼它會繼續生成一個新的交換檔名字是“.hehe.txt.swo",第三個是叫“.hehe.txt.swn"等(p o n m l k j i …)

02出現選擇交換檔案的介面時應該怎麼選擇我們想要的那個檔案呢?
出現此介面時,首先不要慌,只要明白了工作原理就能恢復出咱們最想要的那個檔案,其實出現這個介面時,也是很簡單的,就是vim目前給你保留了兩個檔案,一個是交換檔案.hehe.txt.swp,一個是你原來那個檔案hehe.txt,需要注意的是hehe.txt的狀態是意外退出前的最近一個"寫入檔案"時的內容,這就是說如果你在編輯過程中沒有w(寫入)過,那麼hehe.txt的內容就是此次編輯之前的內容,如果有過w操作,那麼就是你最近的那次w的內容。然後根據需要輸入下邊六個選項中的一個,來選擇用哪個這兩個檔案。
O,E,R,D,Q,A六個選項
O:只讀方式開啟hehe.txt(原來的檔案)
E:寫方式開啟hehe.txt(原來的檔案)
R:用交換檔案.hehe.txt.swp的內容替換hehe.txt檔案並開啟
D:刪除交換檔案,最終儲存好想要的內容後,用此選項刪除交換檔案,這樣下次就不會出現選擇交換檔案的介面了
Q:什麼也不幹,退出去
A:說是什麼中止,但是好像和Q效果是一樣的,都是退出來

我的建議是先用O或者E選項看看現在檔案中儲存的內容是什麼,然後再用R選項看看交換檔案中的內容是什麼,注意這裡退出檔案是要用q或者q!而不要wq,比較完之後根據想要的內容選擇選項,這個時候就需要wq了,然後下次進入編輯時把交換檔案都刪掉即可。
還有一種方式選擇,就是這個介面會提示你.hehe.txt.swp和hehe.txt這兩個檔案哪個是新近的(時間更靠後的),也可以直接自己看這兩個檔案的時間(精確到秒級別的),一般時間靠後的那個是你最想要的,當然這種方式不如上面自己檢視確認後靠譜。

03幾條設定
set sawpfile #開啟交換檔案機制,預設是開啟的
set noswapfile #關閉
set updatetime=10000 #10s更新一下交換檔案內容,預設是4000,即4s
set updatecount=400 #每輸入400個字元也會更新下內容,預設是200
這就是上面說的定時和定量

注意:上面這幾條設定,可以放在vim的配置檔案中,也可以進入vim的命令模式後輸入,前者對所有檔案有效,後者對當前檔案有效。
還有網上有人說交換檔案機制很煩,乾脆關掉最好,其實我覺得其實交換檔案機制真的很棒,很安全,她相當於是每4s或者200個字元就給你儲存一下,而不需要你經常按w建來儲存,所以更方便和是實用

關於vim交換檔案機制還有一些其他的命令,可以參考下面的連結:
https://zhuanlan.zhihu.com/p/26908358