如何将交换 (.swp) 文件合并到原始文件?

Nur*_*mik 3 filesystem swap files

我正在从 bash 运行一个程序,其输出重定向到一个文件 (test.out)。该进程因某些问题而终止(这些问题在这种情况下并不重要),现在我只剩下两个文件:

  • test.out2.1 GB的原始输出文件,以及
  • 生成的交换文件.test.out.swp为 19 MB

有没有办法合并这些文件,就像在原始文件的末尾附加交换文件一样?

或者,我想这样做有错吗?交换文件的用途是否与用于输出/日志的用途不同?

tho*_*ter 6

Vim 使用 .swp 文件作为未完成工作的存储区域,允许它编辑非常大的文件,即使它们不能完全放入内存中。这是从计算机 RAM 非常小的时代遗留下来的,并且不适合内存的大文件更常见,但它仍然存在,这意味着我们可以编辑许多 GB 的文件,而不会耗尽所有可用的 RAM 或杀死过程。Vim 会在完成编辑后删除 .swp 文件,如果进程异常退出,则将其保留。

如果您有一个 .swp 文件和一个原始文件,您可以在一定程度上恢复丢失的工作。这是记录在这里:

http://vimdoc.sourceforge.net/htmldoc/recover.html

要恢复文件,只需打开原始文件。vim 会注意到已经有一个与该文件相关联的 .swp 文件,并且会给你一个警告并询问你想要做什么。假设您具有写入文件所需的权限,“恢复”应该是给定的选项之一。

或者,您可以启动一个新的 vim 实例(在空白文档上)并使用:recover <file>说明您要恢复的文件的命令。

请注意,.swp 文件的主要用途是作为 vim 的临时存储,使其能够编辑大文件,而不是恢复。因此,vim 不会记录对文件的写入,如果在编辑过程中断电,.swp 文件可能会损坏。幸运的是,vim 中的恢复工具对部分损坏的 .swp 文件具有相当的容忍度,并且仍会尝试尽可能多地恢复文件丢失的更改。寻找三个问号的存在:???在恢复的文件中,因为只要在 .swp 文件中发现损坏,就会插入这些问号。

一旦您对恢复感到满意,您需要手动删除 .swp 文件,以确保您在编辑文件时不会一直收到警告。注意不要再次运行恢复过程。