vscode中满屏delete ␍报错是因换行符不一致导致pretterr校验失败,根本原因是windows默认crlf而prettier默认只认lf;解决方案是配置.prettierrc中endofline: "auto"并设置git config --global core.autocrlf false。

为什么VSCode里满屏都是Delete `␍`报错
这不是代码写错了,是换行符不一致触发的格式校验失败。Prettier 默认只认 LF(\n),而 Windows 编辑器默认保存为 CRLF(\r\n)。那个 ␍ 就是回车符 \r,Prettier 认为它是多余字符,所以每行末尾都报 Delete `␍`。
常见诱因包括:
- 刚从 Git 拉下来的项目(Linux/macOS 提交的 LF 文件)在 Windows 上用 VSCode 打开,但没配置换行符自动转换
-
.prettierrc里没设endOfLine,或设成了"crlf" - Git 的
core.autocrlf是true(Windows 默认),导致检出时悄悄加了\r - VSCode 底部状态栏显示的是
CRLF,但 Prettier 配置要求LF
改 .prettierrc 是最稳的项目级解法
直接让 Prettier 接受当前环境的换行习惯,而不是硬要它删 \r。编辑项目根目录的 .prettierrc(或 .prettierrc.js),加上这行:
"endOfLine": "auto"
注意:"auto" 不是偷懒,它会让 Prettier 根据文件已有换行符类型自动适配——检出是 LF 就保持 LF,本地新建文件是 CRLF 就用 CRLF,不再强行统一并报错。
如果必须强制统一为 LF(比如团队规范或 CI 要求),则写:
"endOfLine": "lf"
但此时务必同步处理 Git 和编辑器配置,否则会反复冲突。
必须同步调整 Git 的 core.autocrlf
只改 Prettier 配置,不调 Git,下次 git pull 还会把 CRLF 带进来。执行这条命令:
git config --global core.autocrlf false
它告诉 Git:别碰换行符,原样检出。配合 "endOfLine": "auto",就能让本地开发和远程仓库达成事实一致。
如果你已拉过代码且满屏报错,建议:
- 先执行
git add --renormalize .(重归一化所有文件换行) - 再
git commit -m "normalize line endings" - 最后重启 VSCode —— 波浪线通常就消失了
VSCode 设置里别信“Auto”状态栏
右下角状态栏显示 CRLF 或 LF,只是当前文件的**物理存储格式**,不代表 Prettier 会按它来。即使你手动点它改成 LF,只要 .prettierrc 没配或 Git 下次拉取又带 CRLF,问题照旧。
真正起作用的是三个地方是否对齐:
-
.prettierrc中的endOfLine值 -
git config core.autocrlf的值(推荐false) -
.editorconfig里是否写了end_of_line = lf(如有,需和 Prettier 一致)
三者不一致时,VSCode 会反复“纠正”又“被纠正”,波浪线就一直闪。最省事的做法是:删掉 .editorconfig 里的 end_of_line 行,只靠 .prettierrc + Git 配置双保险。











