vim恢复交换文件中的内容

交换文件的产生可能有几种情况:

1,当你用vim编辑一个文件时,发生突发事件,导致窗口关闭,或者系统崩溃重启;

2,另一个vim正在编辑该文件;

下面具体说下第一种情况:

原文件:

# cat a.txt 
This is a test for vim.
line 1
line 2
line 3

在文件里面添加了新的内容:

This is a test for vim.
line 1
line 2
line 3
### Add new lines:
Line 4
Line 5
Line 6

还没来得及保存,突然终端就断开了,导致.swp文件产生

[[email protected] ~]# ll -a
total 316
drwx------ 5 xielf xielf   4096 Jan  7 13:12 .
drwxr-xr-x 7 root  root    4096 Jan 14  2014 ..
-rw-r--r-- 1 root  root      45 Jan  7 13:10 a.txt
-rw-r--r-- 1 root  root   12288 Jan  7 13:11 .a.txt.swp

查看原文件内容,发现是最原始的数据,没有我们做过修改的内容

[[email protected] ~]# cat a.txt
This is a test for vim.
line 1
line 2
line 3

查看swp文件:

[[email protected] ~]# vim -r .a.txt.swp#-r 读取交换文件
会看到下面一段提示:
Using swap file ".a.txt.swp"
Original file "/root/a.txt"
E308: Warning: Original file may have been changed
Recovery completed. You should check if everything is OK.
(You might want to write out this file under another name
and run diff with the original file to check for changes)
Delete the .swp file afterwards.
Press ENTER or type command to continue
按ENTER继续:
This is a test for vim.
line 1
line 2
line 3
### Add new lines:
Line 4
Line 5
Line 6

swp文件里面的内容有最后编辑的最新内容,那我们要把它恢复到a.txt,先退出。

打开a.txt源文件:

[[email protected] ~]# vim a.txt
E325: ATTENTION
Found a swap file by the name ".a.txt.swp"
          owned by: root   dated: Wed Jan  7 13:11:26 2015
         file name: ~root/a.txt
          modified: YES
         user name: root   host name: test
        process ID: 29908
While opening file "a.txt"
             dated: Wed Jan  7 13:10:00 2015
(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 a.txt"
    to recover the changes (see ":help recovery").
    If you did this already, delete the swap file ".a.txt.swp"
    to avoid this message.
Swap file ".a.txt.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort: 
##
O    以只读方式打开
E    继续编辑,如果该文件正在被另一个vim编辑,你将可能得到两个版本
R    从swp文件中恢复
D    删除swp文件,如果发现swp文件和原文件内容一致,没有任何改动,可以用该操作。
Q    退出
A    类似于退出,但它同时会撤销后续命令的执行,在载入一个脚本编辑多个文件时比较有用。

上面提示显示:modified: YES,说明有改动,我们从swp文件中恢复,按shift+r,接着按回车就恢复了swp文件中的内容。

然后保存下,这样才能将swp的内容保存到原文件里面,保存退出后,记得将swp文件删除,不然下次还会提示。

确认下恢复后的文件:

[[email protected] ~]# cat a.txt 
This is a test for vim.
line 1
line 2
line 3
### Add new lines:
Line 4
Line 5
Line 6

OK,没问题,已经恢复了修改后的文件。

试想一下,如果我们正在配置某个配置文件,突然导致vim编辑异常关闭,导致了交换文件的产生,那我们之前做的大量的修改就白做了,所以知道如何恢复swp文件是很有必要的哦,避免过多的重复工作。

时间: 2024-10-10 20:03:54

vim恢复交换文件中的内容的相关文章

VB.NET 从XML文件中读取内容到JSON

一.关于本文 本文承接了上一篇博客的内容.在上篇博客中,通过函数WriteJsonToXml将一个JSON格式的文件写入了一个对应的XML文件中.本文中则给出了函数RecoverJsonFromXml的代码,可以将XML恢复成JSON格式的文本. 运行本文中代码的环境与上篇博客相同. 待读取的XML文档内容如下: <?xml version="1.0" encoding="gb2312"?> <!--这个XML文档中存储了一个JSON格式的信息--

Linux如何在一个文件中写入内容

Linux中,在一个文件中写入内容,可以vim打开编辑模式,输入我们想要的内容,此次我们使用echo命令 来在一个文件夹中写入内容. echo命令: 第一种: echo 'i love u' >a.txt *在a.txt这个文件中输入i love u,如果没有这个文件则创建.如果有这个文件,那么新内容代替原来的内容. 第二种: echo 'i love u' >a.txt *在a.txt这个文件中输入i love u,如果没有这个文件则创建.如果有这个文件,那么新内容添加在原来内容的后面 原文

linux命令---查找文件中的内容

linux命令---查找文件中的内容 [[email protected] ~]$ cat 1.txt |egrep '123456789|second'-------匹配123456789或者second的行 first line:123456789012345678901234567890123456789012345678901234567890 second line:one two three four five six seven eight nine ten [[email pro

python 修改文件中的内容

在python的文件操作中,是没有办法对文件中具体某行或者某个位置的内容进行局部的修改的,如果需要对文件的某一行内容进行修改,可以先将文件中的所有的内容全部读取出来,再进行内容判断,是否是需要修改的内容,如果是就替换内容,并且将修改替换过的内容和没有修改的内容全部写入到新的文件中. # 打开旧文件 f = open('file_text.txt','r',encoding='utf-8') # 打开新文件 f_new = open('file_text_bak.txt','w',encoding

linux shell 脚本获取和替换文件中特定内容

1.从一串字符串中获取特定的信息 要求1:获取本机IP:menu.lst为系统镜象的IP配置文件,需要从中获取到本机IP信息(从文件获取信息) 1 timeout 1 2 default 0 3 4 title live 5 find --set-root /casper/vmlinuz 6 kernel /casper/vmlinuz boot=casper ignore_uuid showmounts ip=eth0,10.0.66.66,255.255.240.0,10.0.64.3 7

通过靶机网站的编辑器存在的漏洞,拿到靶机上的KEY.txt文件,并把文件中的内容作为key值进行提交

实验环境: 类别 ip 靶机-windows 172.16.1.110 攻击机-kali 172.16.1.111 攻击机-windows 172.16.1.112 题目:通过靶机网站的编辑器存在的漏洞,拿到靶机上的KEY.txt文件,并把文件中的内容作为key值进行提交. 解题过程: 刚看到这个题目是时候是一脸懵逼,当启动完虚拟机以后想到了应该是fck一类的编辑器漏洞, 首先用kali扫描一下,看到了这个就应该明白网站应该是asp的网站,并且是IIS6.0,有解析漏洞 去windows里用浏览

Java IO把一个文件中的内容以字符串的形式读出来

代码记录(备查): /** * 把一个文件中的内容以字符串的形式读出来 * * @author zhipengs * */ public class FileToString { public static void main(String[] args) { System.out.println(readFileToString()); } private static String readFileToString() { // new 一个空文件,用于获取路径 File dirs = ne

java中的文件读取和文件写出:如何从一个文件中获取内容以及如何向一个文件中写入内容

1 2 3 import java.io.BufferedReader; 4 import java.io.BufferedWriter; 5 import java.io.File; 6 import java.io.FileInputStream; 7 import java.io.FileNotFoundException; 8 import java.io.FileOutputStream; 9 import java.io.IOException; 10 import java.io.

修改tnsnames.ora文件中配置内容中的连接别名后,连接超时解决办法

1.tnsnames.ora文件中配置内容中的连接别名:由upaydb修改为IP地址 2.连接超时 定位原因: PLSQL登录界面的数据库列表就是读的tnsname.ora中连接的别名,这个文件中连接别名修改后,那么你PLSQL登录数据库时也要选择对应的连接别名: