vim编辑时遇到E325: ATTENTION Found a swap file by the name “./.backu.sh.swp”错误代码的解决办法「建议收藏」

vim编辑时遇到E325: ATTENTION Found a swap file by the name “./.backu.sh.swp”错误代码的解决办法「建议收藏」遇到这种错误代码的时候你肯定会看到下面这张图。这种情况多半发生在你上次编辑脚本或者其他文件,中途因为某些原因,强制杀死进程,或者强制退出导致的。对比windows系统下,我们编辑文件强制退出,我们也会遇到这样的提示,正常打开word时,如左图所示,当我们没有保存文档时,强制结束进程时,下次打开这个文档会出现右图所示的情景。也就是说,非正常打开会多出一个提示,告诉你是否要恢复你上次未保存的文件。

大家好,又见面了,我是你们的朋友全栈君。

  遇到这种错误代码的时候你肯定会看到下面这张图。这种情况多半发生在你上次编辑脚本或者其他文件,中途因为某些原因,强制杀死进程,或者强制退出导致的。vim编辑时遇到E325: ATTENTION Found a swap file by the name "./.backu.sh.swp"错误代码的解决办法「建议收藏」

对比windows系统下,我们编辑文件强制退出,我们也会遇到这样的提示,正常打开word时,如左图所示,当我们没有保存文档时,强制结束进程时,下次打开这个文档会出现右图所示的情景。也就是说,非正常打开会多出一个提示,告诉你是否要恢复你上次未保存的文件。

vim编辑时遇到E325: ATTENTION Found a swap file by the name "./.backu.sh.swp"错误代码的解决办法「建议收藏」
vim编辑时遇到E325: ATTENTION Found a swap file by the name "./.backu.sh.swp"错误代码的解决办法「建议收藏」
       类比windows的这种机制,我们大概也能猜想得到,Linux使用vim出现编辑异常的时候,肯定也是基于同样的机制。下面我们来详细解释下linux出现这种状况的原因。

问题原因:

 我们通过错误E325的提示可以知道,出现这种情况的原因有两种,其一,是当前有其他的进程正在对相同的文档进行编辑;其二,之前的编辑会话被销毁了(crashed)(也就是说,你上次编辑的时候,没有保存就强制离开了。)。
 下面我们来探讨下产生这种问题的根本原因,也就是vim编写文件的真实机制。我们同时开两个窗口,右测窗口使用,watch -n 1 ls -a 命令,表示,每间隔1秒刷新一下ls命令的执行结果。


vim编辑时遇到E325: ATTENTION Found a swap file by the name "./.backu.sh.swp"错误代码的解决办法「建议收藏」

 我们copy /etc/passwd到app目录下,然后编辑这个文件,我们能看到右侧瞬间多出了一个以.swp为后缀的文件名。如下图所示。这就启发了我们,原来我们在编辑文件的时候,并不是对原有文件进行修改和覆盖的,而是新建一个副本,名字叫xx.swp,我们对文件的编辑都放在了这个副本里面,这也是为什么我们能进行撤销的原因,我们并没有对原有的文件进行修改。当我们正常退出时,这个文件就正常消失,而当我们异常退出时,这个文件就会作为隐藏文件,当我们下次启动vim时,它就会提示我们上次编辑时,有一个文件异常退出了,是否要进行恢复。也就是弹出E325错误。当我们异常退出时,这个隐藏文件会帮助我们还原到上次编辑的状态。也就相当于是一个自动保存的功能。


vim编辑时遇到E325: ATTENTION Found a swap file by the name "./.backu.sh.swp"错误代码的解决办法「建议收藏」

解决办法: 

  当我们知道了这个机制,我们就要考虑如何去解决这种问题。

(1)还原到上次编辑的状态,然后再删除掉.swp文件,做法:vim -r  filename(你上次未保存的文件名),会出现以下界面

左侧会出现一个Recovery completed,告诉你文件已经还原到了上次编辑的状态,而右侧会多出一个swo文件,这个文件类似于swp用来保存你修改文件的副本,而swp文件是我们用来还原的副本。当我们还原之后,可以使用rm -f xx.swp 删除掉这个副本。

(2)当我们不需要还原的时候,只需要我们直接删除这个副本就可以了。利用rm命令直接删除这个副本。

vim编辑时遇到E325: ATTENTION Found a swap file by the name "./.backu.sh.swp"错误代码的解决办法「建议收藏」

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/144180.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • idea 集成svn_idea怎么关联svn

    idea 集成svn_idea怎么关联svn当你idea集成svn工具时:依照如下步骤:1.下载并安装svn:链接:https://pan.baidu.com/s/1jIs00Pg密码:2o3x2.特别说明:如果你没选上:那么你会在你的安装路径上无法找到svn.exe3.之后你就可以正常的使用svn。

    2022年10月17日
    0
  • shell批量新建文件

    shell批量新建文件shell批量新建文件,文件名依次为a1,a2……a100#!/bin/bashPath=/home/yifan/maying/shell/case2[-d$Path]||mkdir$Pathint=1while(($int<=100))dofilename="a"$int""touch$Path/$filenamelet"int++"do…

    2022年6月22日
    64
  • fileinput模块读取文件「建议收藏」

    fileinput模块读取文件「建议收藏」fileinput模块可以对一个或多个文件中的内容进行迭代、遍历等操作。该模块的input()函数有点类似文件readlines()方法,区别在于前者是一个迭代对象,需要用for循环迭代,后者是一次性读取所有行。用fileinput对文件进行循环遍历,格式化输出,查找、替换等操作,非常方便。【典型用法】importfileinputforlineinfileinput.input…

    2022年5月5日
    26
  • spring cloud 入门系列三:使用Eureka 搭建高可用服务注册中心

    在上一篇中分享了如何使用Eureka进行服务治理,里面搭建的服务注册中心是单体的,但是在实际的应用中,分布式系统为了防止单体服务宕机带来严重后果,一般都会采用服务器集群的形式,服务注册中心也是一样

    2022年2月16日
    35
  • oracle sql列转行_oracle 列转行

    oracle sql列转行_oracle 列转行业务中做报表,需要将一列列数据汇总成一行,然后汇总,如下:需要将每个产品进行汇总,通过ichartjs进行展示,图表中需要数据的顺序是:Java代码vardata=[{name:’产品1′,value:[145,192,198,180],color:’#dad81f’},{name:’产品2′,value:[135,210,180,210],color:’#1f7e92’…

    2022年6月29日
    21
  • 【Bootstrap3.0建站笔记三】AspNetPager分页,每一列都可排序

    【Bootstrap3.0建站笔记三】AspNetPager分页,每一列都可排序

    2021年11月16日
    41

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号