聊聊Vim的工作原理
聊聊Vim的工作原理
日常里一直在用Vim這個編輯器,前陣子學習關於Linux中的fd(文件描述符)時,發現vim的進程描述符會比上一個自動加一,後續了解到vim的工作原理後,解開了這個疑問,所以記錄一下。
梳理

首先開一個連接,然後在連接1中用vim vim.txt搞一個文件出來

之後開一個連接2,在目錄下輸入ll,發現沒有什麼變化,但緊接著輸入ls -la

可以看到有一個名為.vim.txt.swp的隱藏文件,而且創建時間和我們輸入指令的時間是相同的。如果這時候我們嘗試同樣輸入vim vim.txt,會看到如下報錯:

根據英文的意思我們不難了解,vim會判斷當前目錄里是不是已經有了.$文件名.swp這個文件,如果有,那麼就說明有編輯這個文件的進程正在運行,所以我們當前不能再創建一個同名的文件了
而且這個swp文件是一個二進位文件,我們也沒法查看他的內容

這時我們在連接1中用wq保存退出,在連接2中再次查看目錄下的文件列表。結果發現swp文件消失了,取而代之的是出現了我們所創建的vim.txt文件
上述情況是正常保存退出的,那如果我們正在寫文件,突然斷電退出了,會怎麼樣呢?我們來模擬一下這個情況

還是同樣在連接1中使用vim vim.txt寫入文件內容,這時我們不用wq保存退出,而是直接斷開連接

可以看到目錄下同樣出現了名為.vim.txt.swp的隱藏文件,如果我們這時候再次輸入vim vim.txt就會看到這樣的報錯

同樣是E325,但實際上詳細資訊和之前的情況是不同的,這次的詳細資訊會說,寫這個文件內容的vim進程可能是崩潰了,我們可以用:revover或者vim -r vim.txt把文件內容給恢復一下,之後把.vim.txt.swp刪去
那麼現在我們就可以清晰的整理一下vim的整個工作流程了
結論

vim 編輯文件原理:
01.開始利用vim編輯一個文件
02.需要檢查是否有該文件的臨時隱藏文件
有:會有報錯資訊
無:進行編輯同時產生一個臨時隱藏文件 /test/test.txt.swp
03.在命令模式就會產生臨時隱藏文件 /test/test.txt.swp
04.進入編輯模式進行編輯
05.編輯完成,確定是否為正常保存退出
是:正常保存退出,同時將該文件的臨時隱藏文件重命名
否:非正常退出,產生一個臨時隱藏文件並長期保留,下次進行編輯會報錯
解決問題方法:
1)查看文件內容 --- 大寫O
2)重新編輯 --- 大寫R
3)不恢復進行編輯 --- 大寫E
4)將臨時文件刪除
a)按大寫字母D
b)rm -f /test/test.txt.swp
參考內容
vim工作原理_奧爾特星雲大使的部落格-CSDN部落格_vim原理

