vim的暂存档、救援回复与开启时的警告讯息

x33g5p2x  于2022-06-10 转载在 其他  
字(1.7k)|赞(0)|评价(0)|浏览(389)

暂存档:.filename.swp

当我们在使用vim编辑时,vim会在与被编辑的文件的目录下,再建立一个.filename.swp的文件。

接下来我在/tmp/vitest目录下创建一个aa.txt文件来测试

我们在vim编辑文件中,那么在当前窗口我们是无法看到当前目录有哪些文件? 我们可以在开启一个窗口来查看

这个暂存档 .filename.swp文件是一个 隐藏的临时文件。当使用vim对aa.txt进行编辑时,vim会主动的建立.aa.txt.swp暂存档,你对aa.txt所做的动作就会被记录到这。
我们可以看一下这个.aa.txt.swp都是什么内容:

正常情况下如果用户退出对该文件的编辑(当前不存在任何用户对该文件进行编辑),那么这个.filename.swp暂存档则会被自动删除
例如我们在窗口1中退出对aa.txt文件的编辑

这时我们再看一下当前目录是否还存在.aa.txt.swp这个暂存档文件?

那么什么是非正常情况呢?
如果你的系统因为某些原因断线了,导致你编辑的文件还没有存储,那么这时候.filename.swp暂存档是不会消失的。我们可以来测试一下 :
首先对aa.txt进入编辑模式

然后 模拟vim进程 异常断线

暂存档的作用

这时候我们再次编辑aa.txt这个文件,会出现什么情况呢?

会出现上图所示的提示信息。
由于暂存盘存在的关系,因此vim会主动的判断你的这个文件可能有些问题,在上图的图示中vim提示两点主要的问题与解决方案,分别是这样的:

  • 问题一:可能有其他人或者程序同时在编辑这个文件:
    由于linux是多人多任务的环境,因此很可能有很多人同时在编辑同一个文件。如果在多人共同编辑的情况下,万一大家同时储存 ,那么这个文件的内容将会变得乱七八糟。为了避免这个问题,因此vim会出现这个警告窗口,解决方案如下:

  • 找到另外那个程序或者人员,请他将该vim的工作结束,然后你再继续处理

  • 如果你只是要看该文件的内容并不会有任何修改编辑的行为,那么可以选择开启成为只读(O)文件,也就是上面输入英文字母O即可,其实就是Open Read-Only

  • 问题二:在前一个vim的环境中,可能因为某些不知名原因导致vim中断(crashed):
    这就是常见的不正常结束vim产生的结果,解决方案依据不同的情况而不同。常见的处理方法为:

  • 如果你之前的vim处理动作尚未储存,此时你应该按下R,也就是使用Recover的项目,此时vim会载入aa.txt.swp的内容,让你自己来决定要不要存储。这样就能够救回来你之前为储存的工作。不过那个aa.txt.swp并不会在你结束后自动删除,所以你离开后还在自行删除,才能避免每次打开这个文件。会出现这样的警告。

  • 如果你确定这个暂存档(aa.txt.swp)是没有用的。那你可以直接按下D删除掉这个暂存档。也就是delete it这个项目即可。此时会载入aa.txt,并且将旧的aa.txt.swp删除后建立这次会使用的新的aa.txt.swp。

至于这个发现暂存盘警告讯息的画面中,有出现六个可用的按钮,各按钮的说明如下:

  • [O]pen Read-only: 打开此文件成为只读档。可以用在你只是想查阅该文件内容,并不想要进行编辑行为时。一般来说在上课时,如果你是登入到同学的计算机去看他的配置文件,结果发现其实同学他自己也在编辑时,可以使用这个模式。
  • [E]dit any way: 还是用正常的方式打开你要编辑的那个文件。并不会载入暂存盘的内容,不过很容易出现两个使用者互相改变对方的文件等问题,不是很好。
  • [R]ecover: 就是加载暂存档的内容,用在你要救回之前没有储存的工作。不过当你救回来并且储存离开后,还是要手动自行删除那个暂存档。
  • [D]elete: 你确定那个暂存档是无用的,那么开启文件前会先将这个暂存档删除。这个动作其实是常做的,因为你可能不确定这个暂存档是怎么来的,所以就删除掉他吧。
  • [Q]uit: 按下q就离开vim,不会进行任何动作会到命令提示字符。
  • [A]bout: 忽略这个编辑行为,感觉上与quit非常类似!也会送你会到命令提示字符。

相关文章