即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

[vim] vim的暂存盘,求援恢复与打开时的警告讯息

编程语言 weixin_36210698 10℃ 0评论
本文目录
[隐藏]

1.前言

在目前主要的文本编辑软件都会有恢复的功能,即当你的系统因为某些原因而导致类似死机的情况,还可以通过某些特别的机制来让你将之前未储存的数据“救”回来!

当我们在使用vim编辑时,vim会在与被编辑的文件的目录下,再创建一个名为.filename.swp的文件。比如说我们编辑/tmp/vitest/man_db.conf这个文件时,vim会主动的创建/tmp/vitest/.man_db.conf.swp的暂存盘,你对man_db.conf做的动作就会被记录到这个.man_db.conf.swp当中喔!如果你的系统因为某些原因断线了,导致你编辑的文件还没有储存,这个时候.man_db.conf.swp就能够发挥救援的功能了!我们来测试一下吧

2.测试

localhost:vim_test jianglei$ vim man_db.conf
#此时会进入到vim的画面,请在vim的一般命令模式下按下“[ctrl]-z”的组合键

[1]+  Stopped                 vim man_db.conf <==按下[ctrl]-z”会告诉你这个信息

当我们在vim的一般指令模式下按下[ctrl]-z的组合键时,你的vim会被丢到背景去执行!接下来我们来仿真将vim的工作不正常的中断吧!

localhost:vim_test jianglei$ ls -al | grep man_db.conf
-rw-r--r--   1 jianglei  staff   4096  6  6 23:42 .man_db.conf.swp    ⇐ 就是他,暂存盘
-rw-r--r--   1 jianglei  staff      7  6  6 23:42 man_db.conf

localhost:vim_test jianglei$ kill -9 %1 <==这里仿真断线停止vim工作
[1]+  Killed: 9               vim man_db.conf
localhost:vim_test jianglei$ ls -al .man_db.conf.swp
-rw-r--r--  1 jianglei  staff  4096  6  6 23:42 .man_db.conf.swp

那个kill可以仿真模拟将系统的vim工作删除的情况,你可以假装死机啦!由于VIM的工作被不正常的中断,导致暂存盘无法借由正常流程来结束,所以暂存盘就不会消失,而继续保留下来。此时如果你继续那个man_db.conf,会出现什么情况呢?会出现如下所求的状态喔

E325: ATTENTION
Found a swap file by the name ".man_db.conf.swp"
          owned by: jianglei   dated: Tue Jun  6 23:42:42 2017
         file name: ~jianglei/vim_test/man_db.conf
          modified: no
         user name: jianglei   host name: localhost
        process ID: 2779
While opening file "man_db.conf"
             dated: Tue Jun  6 23:42:11 2017
#下面说明可能发生这个错误的两个主要原因与解决方案
(1) Another program may be editing the same file.  If this is the case,
    be careful not to end up with two different instances of the same
    file when making changes.  Quit, or continue with caution.
(2) An edit session for this file crashed.
    If this is the case, use ":recover" or "vim -r man_db.conf"
    to recover the changes (see ":help recovery").
    If you did this already, delete the swap file ".man_db.conf.swp"
    to avoid this message.

Swap file ".man_db.conf.swp" already exists!
#下面说明你可进行的动作
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort: 

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

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

    • 找到另外那个程序或人员,请他将该vim的工作结束,然后你再继续处理
    • 如果你只是要看该文件的内容并不会有任何修改的行为,那么可以选择打开成为只读(o)文件,其实就是[O]pen Read-Only的选项啦!
  • 问题二:在前一个vim的环境中,可能因为某些不知名原因导致vim中断(crashed):这就是常见的不正常结束vim产生的后果。解决方案依据不同的情况而不同!觉的处理方法为:

    • 如果你之前的vim处理动作尚未储存,此时你应该要按下“R”,亦可使用(R)ecover的项目,此时vim会载入.man_db.conf.swp的内容,让你自己来决定要不要储存!这样就能够救回之前未储存的工作。不过那个.man_db.conf.swp并不会在你结束vim后自动删除,所以你离开vim后还得要自行删除,才能避免每次找开这个文件都会出现这样的警告!
    • 如果你确定这个暂存盘是没有用的,那么你可以直接按下”D” 删除掉这个暂存盘,即(D)elete it这个项目。此时vim会载入man_db.conf,并且将旧的.man_db.conf.swp删除后,创建这次会使用的新的.man_db.conf.swp喔!

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

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

3.参考文献

《鸟哥的私房菜-基础学习篇》

转载请注明:CodingBlog » [vim] vim的暂存盘,求援恢复与打开时的警告讯息

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情