聊聊Vim的工作原理

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

聊聊Vim的工作原理

文章插圖
首先開一個連接,然后在連接1中用vim vim.txt搞一個文件出來
聊聊Vim的工作原理

文章插圖
之后開一個連接2,在目錄下輸入ll,發現沒有什么變化 , 但緊接著輸入ls -la
聊聊Vim的工作原理

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

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

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

文章插圖
還是同樣在連接1中使用vim vim.txt寫入文件內容 , 這時我們不用wq保存退出,而是直接斷開連接
聊聊Vim的工作原理

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

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

文章插圖
vim 編輯文件原理:01.開始利用vim編輯一個文件02.需要檢查是否有該文件的臨時隱藏文件有:會有報錯信息無:進行編輯同時產生一個臨時隱藏文件 /test/test.txt.swp03.在命令模式就會產生臨時隱藏文件 /test/test.txt.swp04.進入編輯模式進行編輯05.編輯完成 , 確定是否為正常保存退出是:正常保存退出,同時將該文件的臨時隱藏文件重命名否:非正常退出,產生一個臨時隱藏文件并長期保留,下次進行編輯會報錯解決問題方法:1)查看文件內容--- 大寫O2)重新編輯--- 大寫R3)不恢復進行編輯--- 大寫E4)將臨時文件刪除a)按大寫字母Db)rm-f /test/test.txt.swp
參考內容vim工作原理_奧爾特星云大使的博客-CSDN博客_vim原理

    推薦閱讀