我习惯于MacVim (snapshot 51)
在中等规模的项目中编辑 Python/HTML/etc 文件。每隔几个月,我的系统就会死机或崩溃,而 Vim 会留下大量的 .*.swp 文件。崩溃后,当我重新打开 Vim 并编辑其中任何一个文件时,系统会提示“交换文件 ''.xyz.swp'' 已存在!”,选项包括 [中止] [退出] [删除] [恢复] [仍然编辑] 和 [以只读方式打开]。
如果在崩溃时 Vim 缓冲区中有未保存的更改,则此恢复选项会很有意义。但是,崩溃时这些文件在 Vim 的后台打开,且未发生任何变化。
.swp
如果可能的话,我该如何配置 Vim,使其在打开文件和实际文件之间没有变化的文件时不询问这个多余的问题,例如:
自动将.swp文件中的变化与文件进行比较,如果没有变化则直接打开文件而不提示;
不保留没有变化的文件的 .swp 文件。
任何其他系统地避免这种无意义的提示的方法(但我宁愿不要在存在未保存的更改的情况下避免提示)。
我.swp
目前有超过 50 个文件需要清理,而我希望能够避免这种毫无意义的提示让我感到沮丧。
感谢您的阅读。
布赖恩
答案1
我没有测试过,但是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
还有一个针对此问题的脚本堆栈溢出。
这会删除所有交换文件 与真实文件保持同步。任何不匹配的内容都会出现在 vimdiff 窗口中,以便我可以合并未保存的更改。
答案2
虽然这不是你想要的,但这可以缓解这个问题:
" Setup backup location and enable
set backup
set backupdir=$HOME/temp/vim_backups/ "where to put those backups
set directory=$HOME/temp/vim_swp/ "this is for swp files
创建这些目录,然后 vim 将 ~ 和 .swp 文件写入中心位置。这样清理起来就容易多了!
另外,请查看恢复- 如果检测到 .swp 文件,它将提示对磁盘版本和 swp 运行 diff,这样您就可以看到发生了什么变化。在我看来,这种方式更有帮助。
答案3
Vim 会自动创建 .swp 文件作为备份,以应对系统崩溃的情况。要禁用 .swp 文件创建,请按照这些指示。
Google 的第一个结果:vim disable .swp
。
答案4
通过运行 Vim 命令阅读 Vim 中“交换文件”功能的文档:help swap
应该可以帮助您了解 Vim 如何处理交换文件创建等内容。