聊聊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的工作原理

文章插图
根据英文的意思我们不难了解,vim会判断当前目录里是不是已经有了.$文件名.swp这个文件,如果有,那么就说明有编辑这个文件的进程正在运行,所以我们当前不能再创建一个同名的文件了
而且这个swp文件是一个二进制文件,我们也没法查看他的内容
聊聊Vim的工作原理

文章插图
这时我们在连接1中用wq保存退出,在连接2中再次查看目录下的文件列表 。结果发现swp文件消失了,取而代之的是出现了我们所创建的vim.txt文件
上述情况是正常保存退出的,那如果我们正在写文件,突然断电退出了,会怎么样呢?我们来模拟一下这个情况
聊聊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原理

    经验总结扩展阅读