我用来MacVim (snapshot 51)在中等大小的项目中编辑 Python/HTML/etc 文件。每隔几个月我的系统就会锁定或崩溃,并且 Vim 会留下大量 .*.swp 文件。当我在崩溃后重新打开 Vim 并编辑这些文件中的任何一个时,我被告知“交换文件 ''.xyz.swp'' 已经存在!” 与 [中止] [退出] [删除] [恢复] [仍然编辑] 和 [打开只读] 选项。
如果在崩溃时没有保存 Vim 缓冲区的更改,则此恢复选项将有意义。然而,在崩溃时,这些文件是在 Vim 的后台打开的,并且没有改变。
如果可能,我如何配置 Vim 在打开.swp文件和实际文件之间没有更改的文件时不问这个多余的问题,例如:
自动将 .swp 文件中的更改与文件进行比较,如果没有更改则直接打开文件而不提示;
不为没有更改的文件保留 .swp 文件。
任何其他系统地避免这种毫无意义的提示的方法(但我不希望在有未保存更改的情况下避免提示)。
目前我有超过 50 个.swp文件需要清理,毫无意义的提示是我很高兴避免的一种挫败感。
感谢您的阅读。
布赖恩
我没有测试过,但是 vim 官方 wiki 中提供的这个解决方案怎么样?
此外,在恢复的交换文件与真实文件相同的情况下,也不需要进行比较。
#!/bin/bash
# Expects variables realfile, swapfile, recoveryfile.
vim -r "$swapfile" -c ":wq! $recoveryfile" && rm "$swapfile"
if cmp "$recoveryfile" "$realfile"
then rm "$recoveryfile"
else vimdiff "$recoveryfile" "$realfile"
fi
Run Code Online (Sandbox Code Playgroud)
Stackoverflow中也有一个解决此问题的脚本。
这将删除与真实文件保持同步的所有交换文件 。任何不匹配的内容都会在 vimdiff 窗口中显示,以便我可以合并未保存的更改。