聊聊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原理

聊聊Vim的工作原理的更多相关文章

  1. 聊聊jstack的工作原理

    实现一个jstack 在聊Jstack得工作原理前呢,不如让我们先写一个简单的jstack玩玩.不用怕,很简单的,就几行代码的事,看: public class MyJstack { public s ...

  2. 聊聊高并发(三十四)Java内存模型那些事(二)理解CPU快速缓存的工作原理

    在上一篇聊聊高并发(三十三)从一致性(Consistency)的角度理解Java内存模型 我们说了Java内存模型是一个语言级别的内存模型抽象.它屏蔽了底层硬件实现内存一致性需求的差异,提供了对上层的 ...

  3. yum服务器搭建(深入理解yum工作原理)

    作者:firefoxbug 时间:July 27, 2014 分类:Linux 前言 在前面一篇rpm包制作描述了rpm的打包过程,这篇文章主要讲述yum的工作原理. yum 运行原理 yum的工作需 ...

  4. LVS-DR工作原理

    我们都知道LVS有LVS-DR,LVS-NAT,LVS-TUN三种模式,其中DR模式意为Direct Routing(直接路由).对于LVS-DR,你到底了解到什么程度?本文通过一个实例场景,详细介绍 ...

  5. 图解WebGL&Three.js工作原理

    “哥,你又来啦?”“是啊,我随便逛逛.”“别介啊……给我20分钟,成不?”“5分钟吧,我很忙的.”“不行,20分钟,不然我真很难跟你讲清楚.”“好吧……”“行,那进来吧,咱好好聊聊” 一.我们讲什么? ...

  6. 刨根问底:什么是yum源,yum的工作原理又是什么

    1.刨根问底---什么是yum源?yum的工作原理? 说到yum源就必须说到linux系统中特有的依赖关系问题,yum就是为了解决依赖关系而存在的.yum源就相当是一个目录项,当我们使用yum机制安装 ...

  7. 说一下Dubbo 的工作原理?注册中心挂了可以继续通信吗?

    面试题 说一下的 dubbo 的工作原理?注册中心挂了可以继续通信吗?说说一次 rpc 请求的流程? 面试官心理分析 MQ.ES.Redis.Dubbo,上来先问你一些思考性的问题.原理,比如 kaf ...

  8. NFS服务器工作原理

    一.NFS简介 NFS是Network File System的缩写,中文称为网络文件系统,它的主要功能是通过网络(一个局域网)让不同的主机系统之间可以共享文件或目录,NFS的客户端(一般为应用服务器 ...

  9. Nginx 反向代理工作原理简介与配置详解

    Nginx反向代理工作原理简介与配置详解   by:授客  QQ:1033553122   测试环境 CentOS 6.5-x86_64 nginx-1.10.0 下载地址:http://nginx. ...

随机推荐

  1. NOI / 1.1编程基础之输入输出全题详解(8515字)

    目录 01:Hello, World! 02:输出第二个整数 03:对齐输出 04:输出保留3位小数的浮点数

  2. 【一本通基础DP基础模型】摘花生

    题面 题目描述 Hello Kitty想摘点花生送给她喜欢的米老鼠.她来到一片有网格状道路的矩形花生地(如下图),从西北角进去,东南角出来.地里每个道路的交叉点上都有种着一株花生苗,上面有若干颗花生, ...

  3. 在.NET 6.0中配置WebHostBuilder

    大家好,我是张飞洪,感谢您的阅读,我会不定期和你分享学习心得,希望我的文章能成为你成长路上的垫脚石,让我们一起精进. 在阅读第4章"使用Kestrel配置和定制HTTPS"时,您可 ...

  4. 最新MongoDB安装,学习笔记

    MongoDB 导读 作者还在陆续更新中,如果喜欢作者的笔记,觉得可以学习到有帮助,后面会不断学习新内容,就点个关注吧,如果觉得文章有关注可以点个赞,谢谢: 官网:https://www.mongod ...

  5. STC8H开发(十五): GPIO驱动Ci24R1无线模块

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

  6. 羽夏看Linux内核——引导启动(上)

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.如有好的建议,欢迎反馈.码字不易,如果本篇文章有帮助你的,如有闲钱,可以打赏支持我的创作.如想转载,请把我的转载信息附在文章后面,并 ...

  7. java学习第七天lo流.day17

    lo输入

  8. Taurus.MVC 微服务框架 入门开发教程:项目部署:3、微服务应用程序版本升级:全站升级和局部模块升级。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...

  9. idea主类main左侧栏启动按钮消失原因

    今天在开发完一个小项目后,打开idea发现我的springboot项目的启动类左侧栏的按钮消失了,然后我又去看了看mapp等文件的调转也全部消失了,我就很纳闷是不是idea配置坏了,赶忙点击导航栏的按 ...

  10. SpringMvc请求流程源码解析

    目录 SpringMvc请求流程图 请求流程粗讲解 方法细讲 doDispatcher --> 核心 找到Handler#getHandler getHandler(request) mappi ...