使用 vim 编辑过程中如果发生意外断开连接如何恢复已编辑内容的问题

这个问题应该大部分人遇到过, 就是在我们编辑文件的时候可能因为一些特殊原因, 比如断网, 比如机器突然离线等等原因导致我们最终无法正常保存编辑. 这里介绍下出现这种问题如何解决.

  1. 首先在使用 vim 编辑的时候会产生一个 swp 文件, 类似于一个编辑缓冲存档. 该文件是隐藏状态, 必须使用 ls -a 命令才能看到.

  2. 我们重新连接上机器后, 再次打开该文件时, 一般会弹出类似如下图的提示:

    使用 vim 编辑过程中如果发生意外断开连接如何恢复已编辑内容的问题

    意思就是说你这文件有个编辑缓存文档, 你要使用下面的哪个命令来继续操作?
    "O" 是用只读操作打开.
    "E" 是按照未保存之前的内容编辑(也就是恢复到你在断开连接之前的文档内容, 选择后 swp 文件还是存在的)
    "R" 是继续编辑(断开之前编辑成什么样子就恢复成什么样子)
    "D" 删除swp 文件, 同时把文件恢复为断开连接前未保存的文档.
    "Q" 退出, 不操作.

  3. 根据上面的提示, 我们一般选择 R 继续我们之前的编辑. 但是选择这个选项后那个 swp 文件还是存在的. 之后可以再用 rm -rf 的方式删除.

  4. 另外还有一点需要说明的是, 当你在没有删除 swp 文件之前, 如果再次编辑同一文件并且在未保存下断开连接, 那么此时又会在目录下出现一个 swo 文件, 如果再重复一下这个操作就是 swn 文件…这个我只测试了三次, 瞎折腾. (๑ŐдŐ)b 然后发现每一次都会出现一个新的编辑缓存文档. 如下图:

使用 vim 编辑过程中如果发生意外断开连接如何恢复已编辑内容的问题

  1. 此时编辑 main.go 并且选 R 继续编辑, 会出现下面的提示:

    使用 vim 编辑过程中如果发生意外断开连接如何恢复已编辑内容的问题

    意思就是说, 现在你有3个缓存文件, 你要从哪个继续编辑. 分别按照时间先后顺序排列, 最前面的就是最新的那个, 所以我选 1, 然后回车, 底部出现 more 的英文. 按下方向键, 拉到底部. 再回车一下就进去了.

    使用 vim 编辑过程中如果发生意外断开连接如何恢复已编辑内容的问题