當你非正常關閉vim編輯器時(比如直接關閉終端或者電腦斷電),會生成一個.swp文件,這個文件是一個臨時交換文件,用來備份緩衝區中的內容。
需要注意的是如果你並沒有對文件進行修改,而只是讀取文件,是不會產生.swp文件的。
意外退出時,並不會覆蓋舊的交換文件,而是會重新生成新的交換文件。而原來的文件中並不會有這次的修改,文件內容還是和打開時一樣。
例如,第一次產生的交換文件名爲“.file.txt.swp”;再次意外退出後,將會產生名爲“.file.txt.swo”的交換文件;而第三次產生的交換文件則爲“.file.txt.swn”;依此類推。
當你再次用vim打開文件是,會首先出現上述界面。
你可以使用
vim -r
來查看當前目錄下的所有swp文件
你也可以使用
vim -r filename
來恢復文件,這樣上次意外退出沒有保存的修改,就會覆蓋文件。
然後用rm 命令刪除交換文件。
如果你不想vim產生交換文件,可以使用如下命令禁止
:set noswapfile
也可以使用以下命令,設置生成交換文件:
:set swapfile
注意,以上設置僅針對當前文件生效。
根據默認設置,交換文件會每隔4000毫秒(4秒)或者200個字符保存一次。我們可以使用以下命令,修改保存交換文件的頻率:
:set updatetime=23000
:set updatecount=400
注意,如果我們將updatecount的值爲0,那麼就將不保存交換文件。
Vim默認在當前文件所處的目錄下產生交換文件,我們可以通過directory選項來更改交換文件產生的目錄。例如,使用以下命令將交換文件存放在/tmp目錄下:
:set directory=/tmp
注意,如果我們將交換文件存儲在一個指定目錄,那麼當編輯不同目錄下相同名稱的文件時,就會產生命名衝突。我們可以將directory選項設置爲一個以逗號分隔的目錄列表,並將當前目錄(.)設爲目錄列表的第一個選項,這樣交換文件首先會被存放在當前目錄下。