Vim 常见报错速查
开发中常遇到的 Vim 报错信息,快速定位原因和解决方案。
E37: No write since last change / E162: No write since last change for buffer
出现场景:尝试退出 Vim 时
原因:有未保存的修改,Vim 阻止退出以防丢失
解决方案:
- 保存并退出::wq
- 不保存强制退出::q!
- 保存到其他文件::w /tmp/backup.txt 然后 :q!
- 如果多个缓冲区有修改::qa! 全部强制退出
预防:养成 :w 随时保存的习惯
E45: 'readonly' option is set (add ! to override)
出现场景:尝试保存文件时
原因:文件以只读模式打开,或没有写入权限
解决方案:
- 强制保存::w!
- 用 sudo 保存::w !sudo tee %
- 另存为有权限的位置::w ~/backup.txt
- 检查文件权限:在终端中 ls -la <file>
预防:需要编辑系统文件时用 sudo vim 打开
E325: ATTENTION - Found a swap file
出现场景:打开文件时发现 .swp 文件
原因:上次编辑异常退出(崩溃、终端关闭)留下了交换文件
解决方案:
- 恢复未保存的修改:按 R(Recover)
- 确认不需要恢复:按 D(Delete swap file)
- 只读打开:按 O(Open Read-Only)
- 手动删除 swap 文件:rm .filename.swp
预防:正常退出 Vim(:wq 或 :q!),不要直接关闭终端
E353: Nothing in register + / 系统剪贴板无法使用
出现场景:尝试用 "+y 或 "+p 操作系统剪贴板时
原因:Vim 编译时未包含 +clipboard 特性
解决方案:
- 检查支持:vim --version | grep clipboard
- Ubuntu/Debian:sudo apt install vim-gtk3
- CentOS/RHEL:sudo yum install vim-X11
- macOS:brew install vim(Homebrew 版本默认支持)
- 临时方案::set paste 后用终端粘贴
预防:安装带 GUI 支持的 Vim 版本,或使用 Neovim(默认支持)