【问题标题】:vim: recovering a text file "already at oldest change"vim:恢复文本文件“已经在最旧的更改”
【发布时间】:2018-02-10 08:44:16
【问题描述】:

我正在使用 vim 来编辑 .sh 文件。上次,我进行了更改:“E297:交换文件中的写入错误”,我不小心设法擦除了内容并保存。

现在,我只有 .sh .sh~ .su~ .sv~ .sw~ .sy~ .sz~ 内容为空的文件和“E297:在交换文件中写入错误”消息。当我这样做时:u,它说:“已经在最旧的变化”。

当我执行 :recover 时,它会显示:“E305:未找到交换文件”

如何恢复我的文件?谢谢

【问题讨论】:

  • 不幸的是你可能做不到。现代编辑器在恢复文件方面做得更好,Vim 有很多技巧试图获得良好的体验,但效果不佳。我会set backupdir=/tmpset directory=/tmp 所以交换文件总是可写的。希望这个文件最近受到版本控制,足以进行一些恢复? =\
  • Vim 会话也保留撤消历史记录(但设计不佳且使用笨拙)。我还会安装 Gundo 插件(没有这个就不值得使用 vim)来将您的撤消历史记录为可导航的树(它不会帮助这种特定情况,但可以让您更好地控制意外的撤消分支)

标签: vim


【解决方案1】:

在这种情况下,可以使用格式为.filename.sh.swp 的交换文件来恢复原始文件。这些是 Vim 创建的文件,用于在发生潜在崩溃时进行备份。为了恢复您的原始文件,请尝试以下步骤:

  1. 在当前目录中查找交换文件(特定文件可能不止一个):

    ls -a
    
  2. 从终端打开 Vim 中的第一个交换文件:

    vi .filename.sh.swp
    

    或者,使用vim 启动Vim 并使用:e .filename.sh.swp 编辑交换文件。

  3. 来自交换文件类型:recover。现在 Vim 会将恢复的文件加载到新的缓冲区中。如果这是您需要的文件,则只需保存文件:w

可能是恢复的文件不是您的filename.sh 的最新版本,在这种情况下,使用不同的交换文件重复上述步骤 2 和 3,例如.filename.sh.swo。恢复所需文件后,删除交换文件。

这些帮助页面也与恢复文件相关: :帮助交换 :帮助恢复 :help e305

【讨论】:

  • foo~ 文件是备份文件,不是交换文件。
  • 感谢您的回复。不幸的是,没有 .swp 或 .swo 文件。当我做 vim .filename.sh.swp 它是一个空文件,当我做 :recover 它说: E306:无法打开 demo_multiple.sh.swp
猜你喜欢
  • 2020-12-16
  • 1970-01-01
  • 2012-05-30
  • 1970-01-01
  • 2015-10-03
  • 2010-11-27
  • 2023-02-08
  • 2016-03-15
  • 1970-01-01
相关资源
最近更新 更多