当 Vim 进程突然终止(例如系统崩溃)时,它会留下一个 SWP 文件。稍后在 Vim 中打开原始文件提供了恢复选项。大多数时候恢复的文件和保存的文件是一样的,因为我有经常保存的习惯。然后 Vim 说:
Recovery completed. Buffer contents equals file contents.
You may want to delete the .swp file now.
Run Code Online (Sandbox Code Playgroud)
嗯,当然我现在要删除 .swp 文件!
在这种情况下,如何让 Vim 始终自动删除 SWP 文件?
似乎没有内置设置可以执行此操作,因此我正在寻找合适的自动命令事件。
我发现的一种方法是:e #在消息之后,这会导致交换存在选项再次出现,然后我可以“删除它”。但我真的不应该每次都做这些额外的步骤。
注意:您还没有说明您使用的是哪个操作系统。以下适用于 Unix shell,但如果运行 Windows,您可以下载一个简单的 Cygwin 或其他一些 shell。
我以前和你一样,运行:e重新打开同一个文件,得到删除恢复文件的选项。在计算机崩溃或意外重启后,我通过运行vim -r交换文件并让恢复继续来清理所有残留的 Vim 恢复文件。
如果文件没有改变,我想立即删除恢复文件。如果 Vim 可以自动执行此操作,那就太好了,但不幸的是,事实并非如此。
如果文件已更改,我会运行该DiffOrig命令来比较原始版本和恢复版本之间的差异。如果我对恢复文件中的更改感到满意,我会通过使用:x命令保存文件来退出。如果没有,我会通过退出来丢弃恢复的更改:q!。如果恢复文件与保存的文件无关,例如.swp,我通常使用:w filename将恢复的缓冲区保存到具有文件名的文件中。
我将DiffOrig命令添加到我的,.vimrc以便它始终可用。
command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis
Run Code Online (Sandbox Code Playgroud)
我在 shell 中运行以下脚本以查找当前目录树中的每个交换文件。然后每个交换文件用于以“恢复模式”打开 Vim,然后在 Vim 关闭后删除。
command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis
Run Code Online (Sandbox Code Playgroud)
该rm -i选项需要确认 ( y) 才能删除文件。如果您更有信心并希望加快流程,则可以省略此步骤。
| 归档时间: |
|
| 查看次数: |
2531 次 |
| 最近记录: |