聊聊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原理
聊聊Vim的工作原理的更多相关文章
- 聊聊jstack的工作原理
实现一个jstack 在聊Jstack得工作原理前呢,不如让我们先写一个简单的jstack玩玩.不用怕,很简单的,就几行代码的事,看: public class MyJstack { public s ...
- 聊聊高并发(三十四)Java内存模型那些事(二)理解CPU快速缓存的工作原理
在上一篇聊聊高并发(三十三)从一致性(Consistency)的角度理解Java内存模型 我们说了Java内存模型是一个语言级别的内存模型抽象.它屏蔽了底层硬件实现内存一致性需求的差异,提供了对上层的 ...
- yum服务器搭建(深入理解yum工作原理)
作者:firefoxbug 时间:July 27, 2014 分类:Linux 前言 在前面一篇rpm包制作描述了rpm的打包过程,这篇文章主要讲述yum的工作原理. yum 运行原理 yum的工作需 ...
- LVS-DR工作原理
我们都知道LVS有LVS-DR,LVS-NAT,LVS-TUN三种模式,其中DR模式意为Direct Routing(直接路由).对于LVS-DR,你到底了解到什么程度?本文通过一个实例场景,详细介绍 ...
- 图解WebGL&Three.js工作原理
“哥,你又来啦?”“是啊,我随便逛逛.”“别介啊……给我20分钟,成不?”“5分钟吧,我很忙的.”“不行,20分钟,不然我真很难跟你讲清楚.”“好吧……”“行,那进来吧,咱好好聊聊” 一.我们讲什么? ...
- 刨根问底:什么是yum源,yum的工作原理又是什么
1.刨根问底---什么是yum源?yum的工作原理? 说到yum源就必须说到linux系统中特有的依赖关系问题,yum就是为了解决依赖关系而存在的.yum源就相当是一个目录项,当我们使用yum机制安装 ...
- 说一下Dubbo 的工作原理?注册中心挂了可以继续通信吗?
面试题 说一下的 dubbo 的工作原理?注册中心挂了可以继续通信吗?说说一次 rpc 请求的流程? 面试官心理分析 MQ.ES.Redis.Dubbo,上来先问你一些思考性的问题.原理,比如 kaf ...
- NFS服务器工作原理
一.NFS简介 NFS是Network File System的缩写,中文称为网络文件系统,它的主要功能是通过网络(一个局域网)让不同的主机系统之间可以共享文件或目录,NFS的客户端(一般为应用服务器 ...
- Nginx 反向代理工作原理简介与配置详解
Nginx反向代理工作原理简介与配置详解 by:授客 QQ:1033553122 测试环境 CentOS 6.5-x86_64 nginx-1.10.0 下载地址:http://nginx. ...
随机推荐
- Jmeter-记一次自动化造数引发的BeanShell写入excel实例
一.前言 最近工作和生活说忙也忙,说不忙也不忙,但就是已经感觉很长时间没有get新的技术技能了,就是一丢丢的那种也没有,哈哈哈,今天就来讲一下最近get到的小技能吧. 工作中,由于某个需求需要几百条数 ...
- idea的使用技巧和必要的设置
idea 如何开启多个线程 打开下面按钮,然后运行相同的代码即可 打开idea需要选择打开哪一个项目 * 设置如下,关闭下面选项即可
- AOV网的实现(数据结构)
#include <stdio.h> #include <stdlib.h> #include <string.h>//我这里的头以及尾巴与书上的不一样. int ...
- 第三天python3 字典
字典 dict 特点:key-value键值对的数据的集合 可变的.无序的.key不重复:非线性结构: 字典的初始化 d=dict() 或者 d = { } dict(**kwargs) 使用n ...
- list集合的介绍和常用方法
List接口介绍 java.util.List接口继承自Collection接口,是单列集合的一个重要分支,习惯性地会将实现了List接口的对象成为List集合.在List集合中允许出现重复的元素,所 ...
- 清北学堂 2020 国庆J2考前综合强化 Day4
目录 1. 题目 T1 写字符串 题目描述 Sol T2 神奇的数 题目描述 Sol T3 珠子染色 题目描述 Sol T4 病毒扩散 题目描述 Sol 算法 -- 图论 1. 题目 T1 写字符串 ...
- Python Flask Blueprint 蓝图
Python Flask Blueprint 蓝图 本篇来了解一下 Flask 中 Blueprint 蓝图,什么蓝图 ..就是一个分模块的扩展而已,用来让不同的 业务模块api 分到不同的pytho ...
- 倒计时2日!基于 Apache DolphinScheduler&TiDB 的交叉开发实践,从编写到调度让你大幅提升效率
当大数据挖掘成为企业赖以生存.发展乃至转型的生命,如何找到一款好软件帮助企业满足需求,成为了许多大数据工程师困扰的问题.但在当下高速发展的大数据领域,光是一款好软件似乎都不足以满足所有场景业务需求,许 ...
- Excel 统计函数(四):AVERAGEIF 和 AVERAGEIFS
AVERAGEIF [语法]AVERAGEIF(range, criteria, [average_range]) [参数] range:要计算平均值的一个或多个单元格: criteria:筛选条件: ...
- Linux虚拟机 RHEL8.0安装步骤
一. 创建空白虚拟机 1.打开 VMware 虚拟机软件依次选择新建虚拟机并选择选择"自定义" 自定义功能更加全面,典型就是比较简单的配置 2.选择对应的 VMware 版本,此则 ...