notepad++本身不执行脚本,仅调用系统命令行运行外部解释器;90%运行失败源于解释器路径未加入path、路径变量写错(须用"$(full_current_path)")、缺引号、编码未切至utf-8(chcp 65001)或未重启notepad++刷新环境变量。

Notepad++ 本身不执行任何脚本,它只是调用系统命令行去跑外部解释器(比如 python、ruby、g++.exe)。所有“运行失败”,90% 是因为解释器路径没被 Windows 找到,或路径宏写错、没加引号、编码没切对。
为什么点“运行”没反应或报“不是内部或外部命令”
这是最底层的环境问题,和 Notepad++ 设置无关。先在 CMD 里敲 python --version 或 ruby --version ——如果报同样错误,说明系统根本找不到该解释器。
- 重装 Python/Ruby 时务必勾选 Add to PATH(安装器最下方小复选框)
- 若已安装但漏了,手动把解释器目录(如
C:\Users\Name\AppData\Local\Programs\Python\Python311\)和Scripts\子目录都加进系统 PATH - 改完 PATH 后,必须关闭并重启 Notepad++ —— 它启动时就缓存了环境变量,只重启 CMD 没用
- 不推荐用
py -3替代python,NppExec 和 Run 菜单都不识别py启动器的 shebang 解析逻辑
Run → Run(F5)里怎么填命令才不会“找不到文件”
核心是正确使用 Notepad++ 内置路径变量,并处理空格和中文路径。
- 必须用
"$(FULL_CURRENT_PATH)"(带双引号 +$()语法),不能写成%FULL_CURRENT_PATH%或$(FULL_CURRENT_PATH)(缺引号) - 对 Python:填
python -u "$(FULL_CURRENT_PATH)";-u强制无缓冲,避免print()不显示 - 对 Ruby:填
ruby "$(FULL_CURRENT_PATH)" - 对批处理(.bat/.cmd):填
cmd /c "$(FULL_CURRENT_PATH)";/c表示执行完即退出,/k可保留窗口查错 - 对 C++ 编译+运行:填
cmd /k "C:\MinGW\bin\g++.exe" "$(FULL_CURRENT_PATH)" -o "$(CURRENT_DIRECTORY)\$(NAME_PART).exe" && "$(CURRENT_DIRECTORY)\$(NAME_PART).exe" & pause
中文输出乱码或 UnicodeEncodeError 怎么办
不是文件头声明(# -*- coding: utf-8 -*-)的问题,而是 Windows 控制台默认用 GBK 编码,Python/Ruby 在非 UTF-8 终端下会主动降级或报错。
- 临时切编码:在命令前加
cmd /c chcp 65001 >nul &&,例如:cmd /c chcp 65001 >nul && python -u "$(FULL_CURRENT_PATH)" -
chcp 65001切到 UTF-8 代码页,>nul屏蔽提示行,保持输出干净 - 如果脚本含
input(),仅-u不够,仍可能卡住——这时优先用 NppExec 配合npp_console 1,或直接终端运行 - 路径含中文?建议改英文路径;实在不行,换用 Python Script 插件(它绕过 cmd,直连 Python 解释器)
NppExec 执行后控制台一闪而过,看不到输出
这不是脚本没跑,是 CMD 窗口执行完立刻关闭。NppExec 默认不驻留终端,尤其对无 input() 的短脚本。
- 快速补救:在命令末尾加
& pause,例如:python -u "$(FULL_CURRENT_PATH)" & pause - 更规范做法:启用内置控制台,用
npp_console 1 | python -u "$(FULL_CURRENT_PATH)" - 如果用了
cmd /c ...,记得换成cmd /k ...才能保留窗口 - 注意:NppExec 的
& pause是 CMD 语法,不是 NppExec 自己的指令,所以必须走cmd /c或cmd /k包一层
真正容易被忽略的是:PATH 改了不重启 Notepad++、路径变量漏引号、中文路径硬扛不用 chcp 65001、还有把 $(FULL_CURRENT_PATH) 当成普通字符串直接拼接——这些细节一错,整个执行链就断在第一步。











