VIM(gvim/macvim)将未保存/未命名缓冲区的交换文件保存在哪里?(如果它确实这样做的话)。
背景: 在一次半紧张的研讨会上,我正在一个未命名/未保存的 MacVim 缓冲区中做笔记,这时 MacBook 突然没电了,并且突然关机了(它没有像平常一样进入睡眠/休眠状态)。
问题: 是否有人知道未保存的工作是否有可能被保存到交换文件(.swp)或类似文件中,可以恢复?
系统详细信息: 尤其是在使用 Mac OS X 10.5.8 上的 MacVim 时,这种情况发生了(但其他版本的恢复提示也值得关注)。我还没有重新启动 MacVim,以防重新启动会启动清理过程。
答案1
启动 vim 并尝试:
:recover <filename>
如果该文件没有名称,则只需:
:recover
这是最好的选择。有关交换文件和恢复的更多信息,请参阅:
:help usr_11
关于交换文件,通常它们保存在与正在编辑的文件相同的目录中,但在开头添加了 . 以使其隐藏,并在末尾添加了 .swp,但可以通过以下方式将它们移动到其他地方:
:set directory=~/vimswap
或类似的东西。
看:
:help swap
了解所有详细信息。
但是,vim 交换文件与编辑的缓冲区不同,因此请务必阅读有关如何进行恢复的信息。
编辑:回答问题的评论:
[…] 它似乎在您当前的工作目录 ~/tmp、/var/tmp 和 /tmp 中查找交换文件,就我而言,我始终设置了一个当前工作目录,并且它将保存在那里。— dsclementsen 2010 年 10 月 5 日 1:42
另外,一定要检查 vim -r 命令行参数。这将打印出找到的所有交换文件及其所在位置。此外,它还会包含许多额外信息,例如日期/修改时间/用户名/等等...— Neg_EV 2010 年 10 月 5 日 13:49
答案2
我在 Windows 10 上工作,但:recover
找不到交换文件。vim -r
列出了上次编辑会话(也从未保存)中名为 _.swp 的交换文件。可以使用 进行恢复:recover _
。
答案3
答案是:到处都是。诀窍是找到正确的那个。有些位于您的 /tmp 目录中,但很多位于您的主目录下的某个地方。
可能有更有效的方法可以做到这一点,但是当我丢失一个未命名的文件(在 MacBook 上)时,以下方法对我有用:
在主目录中,搜索备份文件(需要几秒钟,并且可能可以变得更智能):
find ./ -name ".s*" > findVimBackups.txt
打开文件:
vim findVimBackups.txt
删除不用于未命名文件备份的文件名:
:g!/\/\.s..$/d
:g/svn/d
现在我看到了未命名备份文件位置的列表。在每个目录中,我运行以下命令,直到找到今天的文件:
ls -ltra <directory>
我进入正确的目录并打开 vim 并输入:recover 并选择正确的备份。
答案4
我能够在 Win10 盒子上恢复我的文件,如下所示:
转到您上次打开 vim 的目录。对我来说,那是通过 win 10 任务栏上的 vim 快捷方式。右键单击 vim 图标,再次右键单击 vim 快捷方式并选择“属性”。将弹出一个对话框。该对话框中“开始于:”字段中的值是我上次打开 vim 的实际位置。对我来说,该值为%HOMEDRIVE%%HOMEPATH%
。转到 dos 命令控制台并调用命令echo %HOMEDRIVE%
和echo %HOMEPATH%
确定它的位置。
检查该目录中所有 _.s* 文件的最后修改日期。找到最后修改日期与您上次打开文件的时间相匹配的文件。
打开 vim。输入:recover _filename_
where文件名是您在前面的说明中找到的文件。