这篇文章想要说的不是vim是什么以及怎么用,亦或是vim有多厉害,关于这些,熟悉Linux的同行大家都了解,那么今天就来说说vim的编辑原理
下图为vim工作原理图
我们先来看一下,当我们用vim进行编辑时会发生什么。
案例描述:我们使用xshell远程连接虚拟机centos7,且有两个会话同时连接该虚拟机,我们在第一个会话中使用vim打开
我们可以看到,在第一个会话中,我们打开./test/test.txt文件进行编辑时,我们在第二个会话中依旧进入到./test目录中进行查看,第一次使用ls命令,我们只看到了有test.txt文件,但当我们使用ls -la查看时 我们发现有 .test.txt.swp这个文件,所以我们就明白了,当我们在进行使用vim进行编辑时,会产生一个跟源文件同名并带有.swp后缀的临时文件。
我们会好奇,加入我在会话二中也进行编辑会怎样,因为我们在会话二中也看到了test.txt文件,于是我们尝试一下
额…???wfk,会话二中是什么鬼?我们先冷静思考一下,为什么是这样的?嗯,刚刚我们看到,在会话二./test目录下有 test.txt 和 .test.txt.swp,我们现在打开的是test.txt文件,会不会是 .test.txt.swp这个文件搞的鬼?不难,我们看一下它里面的内容就OK啦。但是问题又来了,它是一个二进制文件,不能查看,。。。
那我们就正常保存退出,再来看一下有没有.test.txt.swp文件,
我们再次尝试一下,在绘会话一中用vim进行编辑文件,不要保存退出,直接断开连接
这时又出现了.test.txt.swp文件,我们继续用vim进行编辑test.txt文件,出现如下报错信息
好了,我们现在整理一下,在vim编辑过程中会出现一个临时隐藏文件,其出现的原因有两个
1.vim进行编辑文件时即同时出现
2.使用vim编辑文件时,非正常退出时出现
现在,话归正传,我们回到最初的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