VIM(gvim / macvim)在哪里保存未保存/未命名缓冲区的交换文件?


52

VIM(gvim / macvim)在哪里保存未保存/未命名缓冲区的交换文件?(如果这样做的话)。

背景: 在整个半激烈的研讨会中,当MacBook耗尽汁液并且无处掉电时,我在一个未命名/未保存的MacVim缓冲区中记笔记(它通常不会入睡/休眠)。

问题: 有人知道未保存的工作是否有可能已经保存到交换(.swp)文件等中,可以恢复吗?

系统详细信息: 特别是在Mac OS X 10.5.8上使用MacVim时,发生了这种情况(但其他版本的可能的恢复提示也很有趣)。我尚未重启MacVim,以防万一这样做会启动清理过程。


1
澄清:未保存是指从未保存。通过按Command-T(我认为等同于:tabe)创建文件,即在新选项卡中打开一个新的未命名缓冲区。(我通常会做“:SAV somefilename”在后一阶段。
davur

没关系 看到我的答案的补充。
frabjous

Answers:


60

启动vim并尝试:

:recover <filename>

如果文件没有名称,则只需:

:recover

那是你最好的选择。有关交换文件和恢复的更多信息,请参见:

:help usr_11

关于交换文件,通常将它们保存在与正在编辑的文件相同的目录中,但带有。添加了开始以使其隐藏并在末尾添加.swp,但可以通过以下方式将其移动到其他位置:

:set directory=~/vimswap

或类似。

看到:

:help swap

对于所有细节。

但是,vim交换文件与编辑后的缓冲区不同,因此请确保在那里阅读如何进行恢复。


编辑:回答问题的评论:

[…]似乎在您当前的工作目录中查找〜/ tmp,/ var / tmp和/ tmp中的交换文件,在我的情况下,我始终都设置了当前的工作目录,这就是保存该目录的地方。– dsclementsen 10年10月5日在1:42

另外,请务必检查vim -r命令行arg。这将打印出找到的所有交换文件及其所在位置。此外,它将具有很多额外的信息,例如日期/修改的/用户名/等... – Neg_EV 2010年5月5日,13:49


这无济于事。未保存,是指从未保存。意思是我用:tabe或(Command + T)打开了一个新缓冲区。因此,我们谈论的是未保存/未命名的缓冲区。是否存在默认的存储此类未保存作品的位置?
davur 2010年

3
尝试:recover不使用文件名。我刚刚测试了恢复未命名文件的方法,它可以正常工作。无论如何,即使该特定命令没有帮助,也可能会读取这些帮助文件。
frabjous

1
据我所知,这还没有。我只是通过在编辑新文件时从外部杀死vim进行测试。但是当我recover不加争论地跑时,它甚至让我从一些较旧的会议中选择。无论如何,用于未压缩缓冲区的.swp文件可能在/ tmp中,但是它是否在其他位置取决于您是否有set directory= <something>
frabjous

2
另外,请务必检查vim -r命令行arg。这将打印出找到的所有交换文件及其所在位置。此外,它将具有很多额外的信息,例如日期/修改的/用户名/等...
Neg_EV 2010年

1
我必须使用命令:recover!来恢复未保存的文件。

2

我在Windows 10上工作,:recover但未找到交换文件。vim -r列出了上一个编辑会话(也从未保存过)中名为_.swp的交换文件。使用可以恢复:recover _


1

答案是:到处都是。诀窍是找到正确的方法。其中一些位于/ tmp目录中,但其中许多位于主目录下。

也许有更有效的方法来执行此操作,但是当我丢失了一个未命名的文件(在MacBook上)时,以下方法对我有用:

在主目录中,搜索备份文件(可能需要花费几秒钟的时间,并且可能会变得更聪明):

find ./ -name ".s*" > findVimBackups.txt

打开文件:

vim findVimBackups.txt

删除不用于备份未命名文件的文件名:

:g!/\/\.s..$/d
:g/svn/d

现在,我看到未命名备份文件的位置列表。在每个目录中,我运行以下命令,直到找到今天的文件:

ls -ltra <directory>

我进入正确的目录并打开vim并输入:recover并选择正确的备份。


0

看来它们将最终出现在您的工作目录中。:pwd这是在您打开vim的任何位置,或者您可以使用:cd或类似方法设置它。

未命名缓冲区的交换文件似乎只是没有文件名就被转储在那里,所以您最终会得到.swp .swn .swo等。我发现这不是在尝试恢复某些内容时出现的,而当我的hg忽略文件覆盖得不够多时不同的后缀!

我猜想可能有很多未命名的缓冲区发生了变化,可能是原因,删除这些缓冲区导致神秘文件消失了

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.