注意:您尚未说出正在使用哪个操作系统。以下内容适用于Unix Shell,但如果运行Windows,则可以下载准系统Cygwin或其他外壳。
我曾经做过与您相同的操作,请:e
重新打开同一文件以获取删除恢复文件的选项。崩溃或计算机意外重启后,我通过vim -r
在交换文件上运行并让恢复继续进行,清理了所有剩余的Vim恢复文件。
文件未更改时
如果文件没有更改,我想立即删除恢复文件。如果Vim可以自动执行此操作会很好,但不幸的是,事实并非如此。
文件更改后
如果文件已更改,我将运行DiffOrig
命令以比较原始版本和恢复的版本之间的差异。如果对恢复文件中的更改感到满意,则可以通过使用:x
命令保存文件来退出。如果不是,我通过退出放弃恢复的更改:q!
。如果恢复文件未与保存的文件关联,例如.swp
,我通常使用:w filename
将恢复的缓冲区保存到带有文件名的文件中。
DiffOrig助手
我向我添加了DiffOrig命令,.vimrc
以便它始终可用。
command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis
Shell脚本
我在外壳程序中运行以下脚本,以查找当前目录树中的每个交换文件。然后,每个交换文件都用于在“恢复模式”下打开Vim,并在关闭Vim之后将其删除。
find . -type f -name '.*.sw?' -exec vim -r "{}" -c DiffOrig \; -exec rm -iv "{}" \;
该rm -i
选项需要确认(y
)才能删除文件。如果您更有信心并希望加快该过程,则可以省略。
:e #
技巧虽然不理想,但比下面的当前答案更有用。:-)