Notepad++将代码转为Unix格式的核心操作是使用“编辑→文档格式转换→转换为UNIX(LF)”,右下角状态栏实时显示并确认格式,不可仅靠另存为UTF-8解决,因换行符(EOL)与编码正交。

Notepad++ 里把代码转成 Unix 格式,核心就一件事:把 \r\n 换行符替换成 \n。不改编码、不改内容,只动换行符——否则在 Linux 上跑 .sh 脚本会报 bash: $'r': command not found 这类错误。
怎么快速切换成 Unix(LF) 格式
打开文件后,直接看 Notepad++ 窗口右下角:如果显示 Windows(CR LF),说明当前是 Windows 换行格式。双击这个区域(或右键点击),会弹出格式菜单;选 Unix(LF) 即可即时转换。转换后右下角变成 Unix(LF),状态栏还会闪一下提示。
也可以走菜单路径:编辑 → 文档格式转换 → 转换为UNIX格式。注意不是“编码”菜单里的选项,别点错位置。
为什么不能只靠“另存为 UTF-8”解决
很多人以为保存成 UTF-8 编码就能跨平台,其实不行。编码(如 UTF-8)管的是字符怎么解读,换行符(\r\n vs \n)是独立的控制字符,属于“行尾格式”(EOL),和编码无关。
- Windows 默认用
\r\n(CR+LF) - Linux/macOS 只认
\n(LF) - 哪怕你用
UTF-8编码保存,只要没切 EOL,Linux 的bash仍会把末尾的\r当成命令的一部分
批量转换多个文件的注意事项
单个文件点几下就完事,但项目里常有几十个 .sh、.py 或配置文件要一起处理。这时候别手动开每个文件再点转换——容易漏、不可复现。
推荐两个稳妥做法:
- 用 Notepad++ 的“全部替换”功能配合正则:打开“查找”→ 勾选“正则表达式”,查找
\r\n,替换为\n,然后对所有打开的文件执行“全部替换”。但注意:这会破坏原始\r\n语义,慎用于含 Windows 特有逻辑的文本 - 更推荐写个简单脚本调用
notepad.menuCommand(MENUCOMMAND.FORMAT_TOUNIX)(需启用 PythonScript 插件),或干脆在 Linux 侧用dos2unix *.sh批量处理,更可靠
默认新建文件就用 Unix 格式
如果你长期在 Windows 上写 Linux 可执行脚本,每次都要手动切格式很烦。可以提前设好默认行为:设置 → 首选项 → 新建 → 格式 → Unix(LF)。这样以后新建的空文件,一保存就是 \n 结尾,省去后续转换步骤。
注意:这个设置只影响“新建文件”,对已存在的文件无效;另外,如果文件已有 BOM 或特殊编码,EOL 设置不会覆盖它——换行符和编码是两个正交维度,得分开确认。
最易被忽略的点:右下角显示的格式名称(如 Unix(LF))是唯一可信指示,别凭感觉判断;有些插件或远程同步工具会悄悄还原换行符,改完建议立刻上传到 Linux 测试一次 file -i script.sh 和 head -n1 script.sh | cat -A 看实际结尾符。


















