notepad++的“默认行尾格式”包含两个独立设置:一是新建空白文件的行尾格式(settings→preferences→new document→format (eol)),仅影响ctrl+n新建的文档;二是保存时自动转换格式(settings→preferences→new document→save→勾选“save as”并选择目标格式),仅在ctrl+s或菜单保存时将整份文件统一转为目标换行符,两者互不影响且均不改变已打开文件的即时显示。

Notepad++ 里“默认行尾格式”不是单一开关,而是两个独立设置:一个是新建空白文件用什么换行符,另一个是保存时强制转成什么换行符。搞混这两者,就会出现“明明设了 LF,保存后还是 CRLF”的情况。
新建文件默认行尾符怎么设(Settings → Preferences → New Document → Format (EOL))
这个设置只影响你按 Ctrl+N 新建的空白文档,和已打开的文件、拖进来的文件完全无关。
- 勾选
Windows (CRLF)或UNIX/OSX (LF),就决定了新文件第一行末尾是\r\n还是\n - 它不改变你编辑过程中敲
Enter的行为——Notepad++ 从不“智能猜”换行符,你敲一次回车,就按当前文件已有格式追加一行 - 如果你用 Git 面向 Linux/macOS 开发,建议这里直接选
UNIX/OSX (LF);Windows 本地脚本调试可选Windows (CRLF) - 注意:该设置和「保存时自动转换」互不影响,可以一个设 LF、一个设 CRLF,但通常不推荐这么干
保存时自动统一换行符怎么开(Settings → Preferences → New Document → Save → Save in UTF-8 without BOM 下方的「Save as」选项)
这才是真正控制“存盘结果”的开关。很多用户以为改了新建格式就万事大吉,结果协作时 Git 报出大量换行符变更,根源就在这儿没开。
- 必须勾选「
Save as」并选择目标格式(如UNIX/OSX (LF)),之后每次按Ctrl+S或菜单「文件→保存」才会触发转换 - 它会把整份文件所有行尾无条件转成你选的格式,不管原来是不是混合的(比如部分
\r\n、部分\n) - 该设置对粘贴、插入、宏操作产生的换行符无效,只管保存动作本身
- 状态栏右下角显示的是当前文件磁盘内容的真实格式,不是你的设置是否启用——哪怕开了自动转换,只要还没保存过,状态栏仍显示原始格式
为什么状态栏显示 Windows (CR LF) 却转不了 LF
这不是 Bug,是 Notepad++ 的设计逻辑:状态栏永远反映文件当前存储状态,而不是你“想让它变成什么样”。
- 你刚打开一个 CRLF 文件,状态栏必然显示
Windows (CR LF),哪怕你已经打开了「保存时自动转换为 LF」的开关 - 要让它变,必须手动执行一次保存(
Ctrl+S),这时才真正写入 LF 格式,状态栏才会跟着更新 - 如果保存后状态栏仍不变,请检查是否误点了「另存为」而非「保存」——只有原路径覆盖保存才触发自动转换
- Git 用户额外注意:
.gitattributes中若设置了* text=auto,Git 的 checkout/commit 可能覆盖 Notepad++ 的保存结果,优先级更高
最常被忽略的一点:新建格式和保存转换是两套平行机制,且都不影响已打开文件的实时显示。你需要分别确认它们是否开启、是否匹配你的工作流,而不是指望一个设置解决所有问题。











