notepad++运行代码依赖nppexec插件调度外部工具链,核心是确保npp_save在脚本首行强制保存、插件正确加载(手动放入plugins目录并解除dll锁定)、工作目录通过cd "$(current_directory)"切换,且python/java/c++命令路径、编码(chcp 65001)、暂停机制(& pause)配置无误。

Notepad++ 本身不带编译器或解释器,所有“运行代码”能力都依赖外部工具链 + 插件调度。真正起作用的是 NppExec 插件(不是“配置文件”,而是命名脚本),且必须确保 NPP_SAVE 在第一行——否则你改了代码却运行旧版本,根本不是配置问题,是没保存。
为什么 NppExec 脚本总不生效?
新版 Notepad++(7.9+)已移除内置插件管理器,NppExec.dll 必须手动安装:
- 去官网下载最新
NppExec.dll(注意不是 zip 包里的子目录,是单个 dll 文件) - 放进 Notepad++ 安装目录下的
plugins文件夹(不是plugins\NppExec) - 重启后检查菜单栏:如果
Plugins → NppExec消失,说明插件没加载,别调脚本,先解决这个 - Windows 10/11 上若提示“无法加载 dll”,右键属性 → 勾选“解除锁定”
Python 脚本怎么写才不会报“找不到模块”?
python "$(FULL_CURRENT_PATH)" 看似简单,但实际执行时工作目录未必是你期望的——尤其当 import 相对路径或第三方包时:
- 必须加
cd "$(CURRENT_DIRECTORY)"切换到当前文件所在目录 -
NPP_SAVE必须在cd之前,否则保存动作可能被跳过 - 推荐完整写法:
NPP_SAVE<br>cd "$(CURRENT_DIRECTORY)"<br>python "$(FULL_CURRENT_PATH)"
- 如果用 virtualenv,得把
python换成绝对路径,比如"C:\myenv\Scripts\python.exe"
Java 编译后运行失败,常见卡点在哪?
Java 不是直接解释执行,必须先 javac 生成 .class,再 java 加载类名(不含 .class 后缀,也不带路径):
-
javac和java命令必须在同一目录下执行,所以cd "$(CURRENT_DIRECTORY)"不可省 -
java $(NAME_PART)中的$(NAME_PART)是文件名(不含扩展名),大小写必须和源码里public class Xxx完全一致 - 如果类在 package 里,脚本要先进入 package 根目录,再
java com.example.Main——NppExec不支持自动解析 package 结构 - 不要写
java "$(NAME_PART).class",会报Could not find or load main class
C/C++ 编译后不弹窗或一闪而过?
控制台程序默认运行完就退出,看不到输出,这不是配置错,是缺少暂停机制:
- 用
gcc或g++编译时,建议加-o明确指定输出名,避免默认生成a.exe - 执行命令末尾必须加
& PAUSE & EXIT(用&&会因前序失败而跳过暂停) - 推荐组合:
NPP_SAVE<br>g++ -o "$(CURRENT_DIRECTORY)\$(NAME_PART).exe" "$(FULL_CURRENT_PATH)"<br>"$(CURRENT_DIRECTORY)\$(NAME_PART).exe" & PAUSE & EXIT
- MinGW-w64 用户注意:
g++.exe可能在mingw64\bin下,而非传统MinGW\bin,环境变量 PATH 得指向对的位置
最常被忽略的不是语法,而是 NPP_SAVE 的位置、插件是否真加载、以及 Java 类名和文件名是否严格一致——这些地方出错,脚本再漂亮也白搭。











