【问题标题】:Deleted directory with files still open in vim (undelete?)已删除的目录仍然在 vim 中打开(取消删除?)
【发布时间】:2014-05-20 11:33:08
【问题描述】:

帮助!我没有使用cp -Rf dir dir.bak 来备份我的活动项目,而是使用rm -Rf dir dir.bak。没有比这更糟糕的了:(

我在我的 ext3 分区上运行了extundelete --restore-directory,它恢复了我的一些目录。

我希望我仍然可以打开 vim。 vim 是否将每个文件的内容保存在内存缓冲区中,即使不在那个 vim 选项卡中?我打开了两个 vim 选项卡,每个选项卡中大约有 6 个窗口。总的来说,我即将丢失 30 个源文件:(

当底层目录被删除时,有没有办法在 vim 中执行:wa!?如果我重新创建底层目录,vim仍然无法保存我猜测的文件,因为打开文件的inode无效。

有没有办法我仍然可以将我在 vim 中打开的所有缓冲区保存到新目录?我不知道缓冲区包含的文件的表示形式。如果我切换 vim 选项卡(我还没有),它会尝试从磁盘重新读取这些文件,对吗?

非常感谢 vim 内外的任何创造性解决方案!

【问题讨论】:

  • 在您的 vim 会话中尝试 ':w /tmp/filename',它应该“另存为”到不同的文件夹和文件。

标签: vim vi ext3 undelete


【解决方案1】:

如果您重新创建文件夹,它应该可以工作。如果文件在缓冲区中打开,则它们在内存中。缓冲区只存储保存文件名的路径。索引节点是文件系统特定的实现细节,vim 对此一无所知。

如果重新创建目录树不是很困难,您可以尝试:wa,直到重新创建所有丢失的文件夹。

【讨论】:

  • 我确实重新创建了目录,即使只是在一个打开的缓冲区上:w 也不起作用。我在vim中做了一个:cd,然后我可以保存那个我似乎必须为每个活动窗口做的特定缓冲区,所以我认为我不能让它适用于不可见的缓冲区: (
【解决方案2】:

对于不小心删除东西的问题,我做了alias rm=trash-put,将删除的文件放入垃圾箱,方便以后找回。我从这里得到了这些信息:http://www.webupd8.org/2010/02/make-rm-move-files-to-trash-instead-of.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 2023-03-31
    • 1970-01-01
    相关资源
    最近更新 更多