vim交换文件机制

之前经常遇到用vim打开文件时,出现选择交换文件的选项,今天花了点时间终于弄清楚了。大致是这样的:

01vim交换文件机制:比如用户在编辑一个名叫“hehe.txt”的文件,那么vim会自动在当前文件的父目录下(可能不是执行vim命令时的当前目录)创建一个名为“.hehe.txt.swap"的文件,并且vim会定时或定量(后面有解释)把当前正在编辑的文件的内容保存到交换文件中去。如果vim正常退出了(用户自己按q!,wq,ZZ等退出的),那么它会删除这个交换文件,但是果vim意外退出了(如强行关掉正在执行这条vim命令的终端),vim就没法删除这个交换文件,所以这个交换文件就被保存下来了。这个时候如果再次vim hehe.txt,就会出现vim的选择交换文件界面了。还要注意一点,如果hehe.txt本身已经有一个交换文件了,那么它会继续生成一个新的交换文件名字是“.hehe.txt.swo",第三个是叫“.hehe.txt.swn"等(p o n m l k j i …)

02出现选择交换文件的界面时应该怎么选择我们想要的那个文件呢?
出现此界面时,首先不要慌,只要明白了工作原理就能恢复出咱们最想要的那个文件,其实出现这个界面时,也是很简单的,就是vim目前给你保留了两个文件,一个是交换文件.hehe.txt.swp,一个是你原来那个文件hehe.txt,需要注意的是hehe.txt的状态是意外退出前的最近一个"写入文件"时的内容,这就是说如果你在编辑过程中没有w(写入)过,那么hehe.txt的内容就是此次编辑之前的内容,如果有过w操作,那么就是你最近的那次w的内容。然后根据需要输入下边六个选项中的一个,来选择用哪个这两个文件。
O,E,R,D,Q,A六个选项
O:只读方式打开hehe.txt(原来的文件)
E:写方式打开hehe.txt(原来的文件)
R:用交换文件.hehe.txt.swp的内容替换hehe.txt文件并打开
D:删除交换文件,最终保存好想要的内容后,用此选项删除交换文件,这样下次就不会出现选择交换文件的界面了
Q:什么也不干,退出去
A:说是什么中止,但是好像和Q效果是一样的,都是退出来

我的建议是先用O或者E选项看看现在文件中保存的内容是什么,然后再用R选项看看交换文件中的内容是什么,注意这里退出文件是要用q或者q!而不要wq,比较完之后根据想要的内容选择选项,这个时候就需要wq了,然后下次进入编辑时把交换文件都删掉即可。
还有一种方式选择,就是这个界面会提示你.hehe.txt.swp和hehe.txt这两个文件哪个是新近的(时间更靠后的),也可以直接自己看这两个文件的时间(精确到秒级别的),一般时间靠后的那个是你最想要的,当然这种方式不如上面自己查看确认后靠谱。

03几条设置
set sawpfile #开启交换文件机制,默认是开启的
set noswapfile #关闭
set updatetime=10000 #10s更新一下交换文件内容,默认是4000,即4s
set updatecount=400 #每输入400个字符也会更新下内容,默认是200
这就是上面说的定时和定量

注意:上面这几条设置,可以放在vim的配置文件中,也可以进入vim的命令模式后输入,前者对所有文件有效,后者对当前文件有效。
还有网上有人说交换文件机制很烦,干脆关掉最好,其实我觉得其实交换文件机制真的很棒,很安全,她相当于是每4s或者200个字符就给你保存一下,而不需要你经常按w建来保存,所以更方便和是实用

关于vim交换文件机制还有一些其他的命令,可以参考下面的链接:
https://zhuanlan.zhihu.com/p/26908358

猜你喜欢

转载自blog.csdn.net/qq_24406903/article/details/84488816