Notepad++ 本身不支持 Nim,必须通过 NppExec 调用 nim 编译器实现一键运行;前提是系统 PATH 已配置 nim,且需在 NppExec 中正确使用 $(CURRENT_DIRECTORY) 切换工作目录、$(FULL_CURRENT_PATH) 处理含空格路径、chcp 65001 解决中文乱码,并支持 $(CMDLINE) 传参。

Notepad++ 本身不支持 Nim,必须靠外部命令调用 nim 编译器;只要系统 PATH 能识别 nim,再用 NppExec 写对路径宏和执行逻辑,就能一键运行 —— 不需要插件以外的额外工具。
确认 nim 命令在 CMD 中可用
这是所有后续操作的前提。Notepad++ 只是“喊人干活”,它自己不编译 Nim。
- 打开 CMD 或 PowerShell,输入
nim --version,必须有输出(如Nim Compiler Version 2.0.0) - 如果报“不是内部或外部命令”,说明 Windows 找不到
nim.exe:要么没装 Nim,要么没加进系统 PATH - 装 Nim 推荐用 choosenim(自动管理版本+PATH),或手动把
nim\bin目录(如C:\nim\bin)加到系统环境变量 PATH 中 - 改完 PATH 后,必须关闭并重启 Notepad++,否则它仍用旧环境变量
NppExec 配置 nim c -r 一键运行脚本
不用 F5 原生运行菜单,它不保存、不感知文件类型、不处理空格路径 —— 必须用 NppExec 写脚本。
- 先确保已安装 NppExec 插件(插件管理 → 搜索安装
NppExec) - 按
F6打开 NppExec 控制台,粘贴以下内容:
cd $(CURRENT_DIRECTORY) npp_save nim c -r "$(FULL_CURRENT_PATH)"
-
cd $(CURRENT_DIRECTORY)切到当前文件所在目录,避免import找不到模块 -
npp_save强制保存当前文件,防止运行旧代码 -
nim c -r是 Nim 的“编译并立即运行”命令,"$(FULL_CURRENT_PATH)"自带双引号,能正确处理含空格或中文的路径 - 不要用
$(FILE_NAME),它不含路径,跨目录 import 会失败
中文输出乱码或 input() 卡住怎么办
Nim 默认用系统终端编码,Windows CMD 默认是 GBK,而 Nim 源码通常存为 UTF-8,直接运行会导致中文显示为 \xe4\xbd\xa0 或 ???。
- 最稳解法:在 NppExec 脚本末尾加
& pause,但治标不治本 - 真正解决编码:用
chcp 65001 && nim c -r "$(FULL_CURRENT_PATH)" - 若脚本含
readLine()却卡住不提示,加-d:release或换用nim c --app:console -r确保控制台模式 - 更彻底方案:在 Nim 源文件顶部加
{.compileTimeOpt("utf8").}并确保保存为 UTF-8 无 BOM
想传命令行参数?别硬写死,用 $(CMDLINE)
比如想运行 test.nim arg1 arg2,不能把参数写死在脚本里,要留出交互入口。
- 把 NppExec 脚本改成:
nim c -r "$(FULL_CURRENT_PATH)" $(CMDLINE) - 运行时按
F6→ Execute → 弹窗里填arg1 arg2(不加引号,空格分隔) - 注意:
$(CMDLINE)是纯字符串拼接,不自动加引号;如果参数含空格,得手动用双引号包裹,例如:"hello world" 123 - 不建议用
$(INPUT),它只接受单行输入,且无法区分参数边界
路径宏、编码、参数传递这三块最容易漏掉细节 —— 尤其是 $(CURRENT_DIRECTORY) 和 $(FULL_CURRENT_PATH) 的区别,很多人用错导致 import 失败却查不出原因。


















