Notepad++ 默认不支持脚本交互输入,因内置输出窗口不接管 stdin;需用 NppExec 的 exec 命令开启交互模式,或直接调用系统终端(如 Windows Terminal)实现完整交互。

Notepad++ 本身没有内置交互式控制台,所谓“运行脚本时无法输入”不是配置错了,而是你默认用的执行方式根本不支持 stdin 输入——比如直接调用 ruby "$(FULL_CURRENT_PATH)" 或 python "$(FULL_CURRENT_PATH)",它们启动的是后台进程,Notepad++ 的输出窗口是只读的,gets、input() 会卡住或直接跳过。
为什么 F5 运行后无法输入(如 input() 卡死)
Notepad++ 的「运行」功能本质是创建一个子进程并捕获其 stdout/stderr,但不接管 stdin。所以:
- Python 的
input()、Ruby 的gets、Node.js 的readline等需要用户键入的操作,在 Notepad++ 内置输出面板里完全无响应 - 即使加了
chcp 65001 &&或-u参数,也只解决编码和缓冲问题,不解决 stdin 绑定 - NppExec 插件的默认控制台同样不转发键盘输入到子进程 stdin(除非显式启用交互模式)
NppExec 中开启交互式 stdin 的真实写法
必须用 NppExec 的 exec 命令配合 -noconsole 和 -interactive 标志,且不能走 Windows cmd /c 包裹——否则 stdin 仍被截断。
正确操作步骤:
- 先确认已安装并启用 NppExec 插件(菜单栏:插件 → NppExec → Show Console)
- 按
F6打开 NppExec 控制台,输入以下命令(以 Python 为例):exec "C:\path\to\python.exe" -u "$(FULL_CURRENT_PATH)"
注意:这里用的是exec,不是cmd /c - 若仍卡住,手动在 NppExec 控制台中勾选「Follow current document」并确保右下角显示「Interactive mode: ON」
- 关键点:NppExec 的交互模式只对直接
exec启动的进程生效;一旦中间套了cmd或PowerShell,stdin 就断了
更可靠的替代方案:用系统终端而非 Notepad++ 控制台
与其折腾 NppExec 的交互开关,不如绕过它,直接调起真正的终端——这样 input()、gets、readline 全部原生可用。
推荐配置(F5 运行 → 保存为快捷键):
- Windows Terminal(推荐):
wt -w 0 nt bash -c "cd '$(CURRENT_DIRECTORY)' && python -u '$(FULL_CURRENT_PATH)'"
(需提前安装 Windows Terminal,并设为默认终端) - 传统 CMD:
cmd /k cd /d "$(CURRENT_DIRECTORY)" && python -u "$(FULL_CURRENT_PATH)"
注意用/k而非/c,否则窗口闪退;-u保证输出实时 - PowerShell:
powershell -Command "Set-Location '$(CURRENT_DIRECTORY)'; python -u '$(FULL_CURRENT_PATH)'"
所有这些方式都会新开一个终端窗口,但能完整支持键盘输入、上下箭头历史、Ctrl+C 中断等——这才是真正可交互的环境。
最常被忽略的一点:NppExec 的「Interactive mode」开关只在控制台处于焦点且进程由 exec 直接启动时才生效;一旦你用 cmd /c 或保存为菜单项再触发,它就自动降级为只读输出。真要交互,别省那几秒,直接唤起终端更稳。


















