crlf、lf、cr分别代表windows(\r\n)、linux/macos(\n)、旧mac(\r)的换行约定;notepad++底部显示当前文件真实换行符,不自动转换;可通过“编辑→eol转换”安全批量修改,避免手动查找替换。

Notepad++ 里换行符显示为 CR、LF 或 CRLF 是啥意思
这三种缩写对应不同操作系统的换行约定:CRLF(\r\n)是 Windows 默认,LF(\n)是 Linux/macOS 默认,CR(\r)极少见(老 Mac 系统用)。Notepad++ 底部状态栏会实时显示当前文档的换行格式,比如 “Windows (CR LF)” 或 “Unix (LF)”。它不自动转换,只忠实呈现文件原始换行符 —— 所以你看到什么,就是文件里存的什么。
怎么把 Windows 换行批量转成 Unix 换行(或反过来)
最稳的方式是通过菜单操作,避免误触正则或编码设置:
- 点击顶部菜单 编辑 → EOL 转换 → Unix (LF)(转 Unix)或 Windows (CRLF)(转 Windows)
- 别用“查找替换”手动改
\r\n→\n,容易漏掉空行或破坏二进制内容 - 如果文件很大(>10MB),转换后建议先保存为新文件再覆盖原文件,防止意外卡死丢数据
- Git 用户注意:
.gitattributes里设了* text=auto的话,Notepad++ 改完换行符,下次 git checkout 可能又被悄悄还原
为什么改完换行符,Git 还提示文件已修改
常见于从 Windows 同步到 WSL/Linux 开发环境,或提交前检查 diff 时发现整文件标红。根本原因是 Git 默认启用 core.autocrlf 自动转换,而 Notepad++ 的修改绕过了 Git 的感知流程:
- Windows 上推荐设
git config --global core.autocrlf true(提交时转LF,检出时转CRLF) - Linux/macOS 或 WSL 推荐设
git config --global core.autocrlf input(只提交时转LF,不检出转换) - 如果项目已存在大量换行混乱,先统一执行
git add --renormalize .再提交 - Notepad++ 本身不读取 Git 配置,所以它显示的换行符永远是“磁盘上实际存的”,和 Git 工作区/暂存区可能不一致
插件或宏能不能自动化换行符处理
可以但没必要 —— Notepad++ 自带功能已足够可靠,加插件反而引入兼容性风险:
- 官方
TextFX插件早已停止维护,新版 Notepad++(v8+)默认不带,强行安装易崩溃 - 用宏录制“EOL 转换 + 保存”动作,对单文件有效;但批量处理多文件时,宏无法判断每个文件原本该用哪种换行符
- 真正需要自动化(比如 CI 中预处理配置文件),应该用
dos2unix或unix2dos命令行工具,而不是依赖编辑器 - 如果你常在跨平台协作中被换行符坑,与其折腾 Notepad++,不如在项目根目录加
.editorconfig文件,明确声明end_of_line = lf
换行符这事看着小,但一旦混在脚本、JSON、Dockerfile 里,就可能让程序静默失败 —— 而 Notepad++ 不会警告你“这个 LF 在 Windows 上可能被某些旧工具当乱码”。所以别只看底部状态栏,得清楚自己改的是什么、为什么改、改完谁会用它。











