直接用 vim -r 文件名可恢复未保存内容,需先确认 .swp 文件存在(如 .notes.md.swp),运行 vim -r 命令后选 R 恢复,保存后手动删除 .swp 文件;若原文件已修改,Vim 会提示冲突并支持比对合并。

直接用 vim -r 文件名 命令就能恢复,关键在于找到对应 .swp 文件并正确操作。
确认 .swp 文件是否存在
进入原文件所在目录,执行:
-
ls -a | grep "\.swp$"—— 查看所有以 .swp 结尾的隐藏交换文件 - 常见命名格式为
.原文件名.swp(如编辑notes.md,则生成.notes.md.swp) - 若多个修改未清理,还可能出现
.xxx.swo、.xxx.swn等,按时间顺序排列,最新的是.swp
用 vim -r 启动恢复流程
运行命令:
-
vim -r 原文件名(例如:vim -r notes.md) - Vim 会检测到交换文件,并显示提示:
Found a swap file by the name ".notes.md.swp"
后面列出选项:[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit - 输入 R(大写)回车,加载 .swp 中的缓冲内容
保存恢复后的内容并清理残留
进入 Vim 后,你会看到上次编辑未保存的全部改动:
- 确认内容无误,输入
:wq保存并退出 - 回到终端,手动删除交换文件:
rm -f .原文件名.swp(如rm -f .notes.md.swp) - 不删的话,下次打开该文件还会弹出相同提示,且可能干扰正常编辑
特殊情况处理
如果原文件已被修改过(比如别人另存了新版本),Vim 恢复时会提示冲突:
- 它会对比磁盘文件与 .swp 中的内容,给出差异视图
- 可选择保留 .swp 内容(即你断电前的编辑)、保留磁盘文件,或手动合并
- 此时建议先
:recover加载,再用:diffget或视觉模式逐段比对

















