Notepad++原生不支持自动保存,Ctrl+Shift+S仅保存已修改且有路径的文件;未命名文档必须通过AutoSave插件并设置Save Untitled Files To路径才能定时保存。

Notepad++ 本身不提供“自动保存所有修改”的后台机制,Ctrl + Shift + S 是唯一原生支持的批量保存动作,但它只保存「已修改且有真实路径」的标签页,不会碰未命名或只读文件。
Ctrl + Shift + S 能保存什么、不能保存什么
这个快捷键触发的是 Save All 命令,行为很明确:
- 只对当前已打开、内容被修改过(标题栏带 * 号)、且已有磁盘路径(即不是
new 1这类未命名标签)的文件生效 - 跳过所有只读文件(比如系统目录下没权限写的
hosts),也不报错,静默忽略 - 不会保存未命名文档——哪怕你刚敲了 200 行 Python,没 Ctrl+S 过一次,它就不存在于磁盘上
- 不检查编码兼容性:如果当前文件是 UTF-8 with BOM,而目标场景(如 Windows
hosts)要求 ANSI,保存成功但后续可能失效
未命名文档怎么不丢?必须靠 AutoSave 插件
原生 Notepad++ 对 new 1、new 2 这类标签完全无备份能力。崩溃或断电后,仅靠 session.xml 恢复的前提是「正常退出」;强制杀进程就全没了。
真正能守住未命名内容的,只有 AutoSave 插件,并且要严格设置:
- 插件 → Plugin Admin → 搜索
AutoSave→ 安装并重启 - 插件 → AutoSave → Options… → 勾选
Save Untitled Files To,并填一个**存在且可写**的路径,例如$HOME/tmp/notepad-untitled -
Auto Save When推荐选Focus Lost(切出窗口即存),比定时更可靠 - 路径不能是 NFS 或远程挂载点(Wine 下运行时尤其注意,会静默失败)
保存 hosts 或 /etc/ 配置文件总提示“拒绝访问”
这不是 Notepad++ 的 bug,而是操作系统级权限拦截。Windows 的 C:\Windows\System32\drivers\etc\hosts 和 Linux(Wine)下模拟的系统路径,默认禁止普通用户写入。
关键点在于启动上下文,不是编辑动作:
- 必须先关闭所有 Notepad++ 窗口
- 右键
notepad++.exe→ “以管理员身份运行”(Windows)或用sudo notepad++(Linux Wine 下极少支持,更推荐改用nano或vim) - 再通过
File → Open(而非拖拽)打开目标文件——拖拽会绕过权限继承,导致能读不能写 - 保存前确认编码:hosts 必须是
ANSI或UTF-8 without BOM,否则系统解析失败
想一键保存 + 运行脚本?NppExec 是刚需
原生没有“先保存再执行”的原子操作。每次 Ctrl+S + F5 太反直觉,容易漏保存就运行旧版本。
用 NppExec 可串起完整流程:
- 插件 → NppExec → Execute → 输入:
NPP_SAVE回车,再输入:cmd /k python -u "$(FULL_CURRENT_PATH)" & PAUSE - 保存为脚本名(如
python-run),再通过Advanced Options → Place to the Macros submenu暴露到菜单 - 最后在
设置 → 管理快捷键 → Plugin Commands里绑定快捷键(如 F5) -
$(FULL_CURRENT_PATH)是关键变量,确保运行的是刚保存的最新版;若文件未命名,NPP_SAVE会先弹出另存为对话框
复杂点在于:未命名文件首次运行时必然中断在另存为环节,这是设计使然,没法绕过——没有路径,就无法定义“运行哪个文件”。

















