notepad++“退出时备份”无法防崩溃丢代码,因仅在正常退出时触发,对未命名文件、只读文件及权限不足路径无效;真正防崩溃需启用“会话快照与周期备份”,并配合nppexec脚本和autosave插件分层防护。

Notepad++ 为什么勾了“退出时备份”还是丢代码
因为这个选项只在你点「关闭 Notepad++」且程序正常退出时才触发,崩溃、蓝屏、被任务管理器杀掉进程——它根本没机会执行。更关键的是,它对 new 1(未命名文件)完全无效,也不处理只读文件或路径无写权限的情况,失败时静默跳过,不报错也不提醒。
实操建议:
- 别依赖它防崩溃,只把它当辅助手段
- 务必同时勾选
With timestamp,否则连续退出会覆盖前一个.bak文件 - 备份目录别设在 OneDrive、腾讯微云或含中文/空格的路径下,Windows 权限机制容易导致写入失败
-
new 1类文件必须靠会话快照,不是靠 .bak
真正防崩溃丢数据,只靠这一项设置
Enable session snapshot and periodic backup 是唯一能在 Notepad++ 崩溃后还原未保存内容的机制。它不写 .bak,而是每 X 分钟把所有打开标签页(包括 new 1)的内容存成 session.xml 和若干 recovery_*.tmp 文件,下次启动自动弹窗恢复。
实操建议:
- 间隔设为
5或10(单位:分钟),太短影响性能,太长风险上升 - 必须同步勾选
Remember current session for next launch,否则只恢复内容,不还原标签页顺序和光标位置 - 快照默认存在
%APPDATA%\Notepad++\backup\,别手动删,也别挪到同步盘根目录 - 该功能对只读文件、未命名文件、大文件都有效,是兜底方案
想定时把编辑内容写回原文件?只能靠 AutoSave 插件
Notepad++ 原生不支持「自动保存到原路径」,AutoSave 插件是唯一可行路径。但它不是开个开关就完事,配置错反而导致误覆盖或静默失效。
实操建议:
- 安装必须走
Plugins → Plugins Admin → 搜索 AutoSave → Install,别手动扔 DLL -
Auto Save When推荐选Notepad++ loses focus(注意不是 window loses focus),切出主窗口即保存 -
Auto Save What务必只勾Current File Only,否则可能把new 2、new 3也强行写进指定目录 - 若勾了
Save Untitled Files To,必须填**绝对路径**(如C:\temp\),且该路径需真实存在、有写权限、非同步盘 - 只读文件(如
/var/log/syslog)会被跳过,不报错
NppExec 运行前自动保存脚本怎么写才不翻车
想让 Ctrl+F5 运行 Python/Shell 时先存盘再执行,NppExec 是最常用方式。但 save 命令表面简单,实际极易失败且不提示。
实操建议:
- 脚本格式示例:
savenpp_run python "$(FULL_CURRENT_PATH)",注意save必须在调用解释器之前 -
new 1执行save会直接失败,不会弹保存对话框,整个脚本中断 - 文件为只读状态时,
save静默跳过,后续命令仍用旧内容运行 -
"$(FULL_CURRENT_PATH)"用双引号包裹,避免路径含空格或中文时 Shell 解析异常 - 别用
AutoSave插件替代——它响应失焦或定时,和 F5 无关,开了反而可能干扰调试节奏
NppExec 脚本强制存盘,失焦或定时靠 AutoSave 插件写回原文件,崩溃兜底靠会话快照。三者互不替代,且每层都有明确的失效边界——比如 new 1 对所有基于「保存事件」的机制都免疫,只认快照。











