vscode新建文件默认换行符需设为lf以避免协作问题:在用户级settings.json中添加"files.eol": "\n"并重载窗口;该设置仅影响未指定换行符的新文件,且易被工作区设置、.editorconfig或git配置覆盖。

VSCode 新建文件默认用 CRLF(Windows)或 LF(macOS/Linux),但跨平台协作时必须统一为 LF,否则 Git 会报 warning: CRLF will be replaced by LF,Prettier 会报 Expected linebreaks to be 'LF' but found 'CRLF'——这不是编辑器 bug,是配置没对齐。
怎么让新文件一打开就是 LF
核心就一条配置:"files.eol": "\n"。它只影响“未指定换行符”的新文件(比如新建一个空 .js 或 .py),不改已有文件。必须写进用户级 settings.json,且值是字符串 "\n"(不是文字 “LF”,也不是 "lf")。
- 按
Ctrl+,(Windows/Linux)或Cmd+,(macOS)打开设置 → 搜files.eol→ 点 “Edit in settings.json” - 添加或修改这一行:
"files.eol": "\n" - 保存后必须执行
Ctrl+Shift+P→ 输入Developer: Reload Window重载窗口,否则新建文件仍沿用旧行为
为什么改了 settings.json 还是 CRLF
VSCode 的换行符设置有明确优先级:工作区设置 > 用户设置;EditorConfig > VSCode 原生设置。常见覆盖源有三个:
- 项目根目录存在
.vscode/settings.json,里面写了"files.eol": "\r\n" - 你打开了多根工作区(
.code-workspace),其配置中显式设了files.eol - 装了 EditorConfig 插件,且项目有
.editorconfig,其中含end_of_line = crlf
验证方式:右下角状态栏点开换行符显示,再看它是否随你点击切换而变化;如果点不动或切完立刻回弹,说明某层配置在接管。
当前文件怎么立刻切到 LF(救急用)
这是最常用、最即时的操作,不依赖任何配置:
- 打开任意文本文件,右下角状态栏显示
CRLF或LF - 点击它 → 选
LF→ 编辑器立刻重绘所有换行(不需保存就可见效果) - 但必须手动
Ctrl+S才真正写入磁盘;否则关掉重开,还是原格式
注意:这个操作仅限当前文件,不会改变默认行为,也不能解决 Git 脏提交——只是临时查看或调试用。
Git 和 EditorConfig 必须同步配
只改 VSCode 不解决问题。Git 可能在后台偷偷转,其他协作者用 Sublime 或 JetBrains 打开照样乱。三者要对齐:
- 项目根目录加
.gitattributes:* text=auto eol=lf - 运行
git config --global core.autocrlf false(Windows 用户也别用true或input) - 项目根目录加
.editorconfig:end_of_line = lf,并确认装了 EditorConfig 插件
最容易被忽略的是 .gitattributes 和 core.autocrlf false 的组合——VSCode 写 LF,Git 就老老实实存 LF,不再“好心帮忙”转换,协作才真正稳定。











