You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Vim会生成持续增大的.swp文件?

Vi/Vim 终端异常关闭后生成超大交换文件导致磁盘耗尽

问题场景

通过SSH打开vi/Vim,将大内容粘贴至缓冲区后,终端被关闭或崩溃,后续发现系统磁盘空间被完全耗尽。

相关案例

  • 某用户使用Vim 8.0.1453版本,复制大文本导致控制台卡顿,强制关闭控制台后,几天后生成了数百GB的.swp交换文件,两次遇到该问题都需手动定位并清理这些文件。
  • 某Linux服务器磁盘耗尽,排查后发现是两个Vim交换文件占用了全部空间。
  • 某用户打开一个仅100行的Python代码文件数天,删除文件并关闭运行Vim的终端后,几天后磁盘空间耗尽,最终找到~/.vim/file.py.swap文件,其大小高达298GB。

原因分析

Vim的交换文件(.swp)用于异常退出时恢复编辑内容,当终端异常关闭时,Vim进程可能未正确终止,反而在后台持续写入交换文件——尤其是粘贴大内容到缓冲区后,进程可能陷入异常循环,不断向交换文件写入数据,最终耗尽磁盘空间。

解决方案

  1. 紧急清理:使用find / -name "*.swp" -type f -size +1G快速定位超大交换文件,确认无需要恢复的内容后,执行rm -f 目标swp文件路径删除。
  2. 提前预防:
    • 编辑大文件时禁用交换文件:启动Vim时加参数vim -n filename,或在.vimrc中添加set noswapfile配置。
    • 坚持正常退出Vim:使用:q/:wq等命令退出,避免直接关闭终端。
    • 定期清理交换文件:添加定时任务,自动清理超过指定大小或创建时间过久的.swp文件。
  3. 残留进程处理:终端关闭后,用ps aux | grep vim检查是否有残留Vim进程,如有则执行kill -9 进程ID强制终止。

内容的提问来源于stack exchange,提问作者Cireo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 08:17:23