notepad++保存时自动删行尾空格由settings→preferences→misc.中的trim trailing spaces automatically控制;需取消勾选、点击右下角save按钮、重启软件才能生效,否则便携模式、插件或企业策略可能覆盖设置。

Notepad++ 保存时自动删行尾空格,不是“设置成整洁”,而是全局强制行为——它不区分语言、不看语义、不预览、不可撤回。真要保持文件整洁,得先关掉它,再按需手动清理。
怎么关掉保存时自动删行尾空格
这个行为由 Trim trailing spaces automatically 控制,位置在 Settings → Preferences → MISC.。但它生效有三个关键前提:
- 必须取消勾选该选项(不是只打开窗口就完事)
- 点右下角的
Save按钮——很多人点了 × 关闭窗口,设置根本没写入 - 重启 Notepad++:部分设置(尤其是便携模式或策略组注入的)不重启不会加载新配置
验证是否生效:新建文件,输入 hello␣␣(末尾两个空格),Ctrl+S 保存后立即 Ctrl+A → Ctrl+C 粘贴到记事本里看空格还在不在。
为什么关了还被删?常见干扰源
关掉设置后仍被删,基本不是 Notepad++ 主逻辑的问题,而是外部因素覆盖了你的选择:
- 你运行的是便携版,实际读取的是程序目录下的
config.xml,而非%APPDATA%\Notepad++\config.xml;改错文件了 - 插件劫持了保存流程,比如旧版
TextFX或某些格式化插件自带onSave钩子,优先级高于主设置 - v8.6+ 版本企业部署脚本可能通过注册表或策略组重置该选项,每次启动都强行开启
排查建议:启动时加 -noPlugin 参数(命令行运行 notepad++.exe -noPlugin),再测试保存行为。如果此时不删了,就是插件问题。
想局部保留行尾空格怎么办
Notepad++ 原生不支持 per-file 或 per-language 关闭 trim。所谓“Markdown 行尾两个空格换行”“Makefile 行尾空格续行”,在它眼里只是待清除的冗余字符。绕过方法只有两个:
- 彻底关闭全局
Trim trailing spaces automatically,用菜单编辑 → 行操作 → 删除尾部空白手动清理——只在需要时触发,可控 - 换编辑器:VS Code 支持
"files.trimTrailingWhitespace": false+"[markdown]": {"files.trimTrailingWhitespace": true}这类精细控制
别信“我只在写 Markdown 时小心点不加空格”——多标签页下,任意一个文档保存都会触发全局 trim,你刚在另一个 tab 里为对齐注释加的两个空格,可能下一秒就被无声吃掉。
真正容易被忽略的细节
这个设置影响的是“所有打开的文档”,不是“当前活动文档”。哪怕你只保存了 script.py,正在后台挂着的 README.md 也会被一并处理。更隐蔽的是:它不校验文件是否被修改过,只要调用保存动作,就无条件执行 trim。所以如果你习惯 Ctrl+S 频繁存档,又恰好开着多个含语义空格的文件,风险比想象中高得多。











