notepad++需用宏录制配合$(name_part)变量实现一键插入当前文件名,因该变量仅在“运行命令”中生效,宏通过调用cmd输出并复制/写入剪贴板完成插入。

Notepad++ 本身不支持一键插入当前文件名,但用宏(Macro)录制 + 内置变量就能稳定实现,无需插件、不依赖 Python Script。
为什么不能直接用 $(NAME_PART) 变量?
因为 $(NAME_PART) 只在「运行命令」(Run → Run…)或「启动外部工具」中生效,不能直接粘贴到编辑区。你按快捷键时如果弹出的是命令行窗口,说明走错了路径——宏才是唯一能把它“写进文档”的方式。
用宏录制插入 $(NAME_PART) 的完整流程
关键不是“输入文字”,而是“触发变量展开并插入”。必须用「运行命令」作为中间跳板,再把结果复制回来:
- 点击「宏」→「开始录制」
- 按
Ctrl + N新建一个临时空文档(避免污染原文件) - 点击「运行」→「运行…」(或按
F5),在弹出框中输入:cmd /c echo $(NAME_PART) & PAUSE
→ 点击「运行」 - 命令行窗口会显示当前文件名,按任意键关闭它
- 回到 Notepad++,用鼠标选中刚弹出的文件名(在临时文档里),
Ctrl + C复制 - 切换回原文件,光标定位到想插入的位置,
Ctrl + V - 点击「宏」→「停止录制」
- 「宏」→「保存当前录制宏」,起名如
Insert filename
更干净的替代方案:用「运行命令」+ 剪贴板自动写入
上面方法要新建文档、手动复制,容易出错。更稳的方式是让命令行直接把结果写进剪贴板(需系统支持 clip):
- 确保 Windows 已安装
clip.exe(Win7+ 默认自带) - 录制宏时,在「运行」→「运行…」中输入:
cmd /c echo $(NAME_PART) | clip
- 接着立刻执行
Ctrl + V(此时剪贴板已有文件名) - 别忘了删掉临时文档或切换标签页,否则
$(NAME_PART)会变成临时文件名
⚠️ 注意:$(NAME_PART) 不含后缀;要带后缀用 $(FILE_NAME),完整路径用 $(FULL_CURRENT_PATH) —— 这些变量只在「运行」对话框里解析,宏里不能直接写成字符串。
宏快捷键设置后仍不生效的常见原因
不是快捷键没绑定成功,而是触发时机不对:
- 宏必须在「有打开文件」的状态下运行,新建未保存的空白文档时
$(NAME_PART)为空 - 快捷键冲突:比如你设了
Ctrl + Alt + N,但中文输入法下可能被拦截,切英文输入法再试 - 宏保存后没重启 Notepad++,旧版本(v8.4 以前)有时不重载宏列表
- 误把宏绑到了「Scintilla 命令」分类下——务必在「快捷键管理」→「宏」页签里设置
真正容易被忽略的一点:宏里的「运行命令」动作,会短暂弹出黑窗,这是正常现象;如果完全没反应,大概率是 $(NAME_PART) 所在上下文不满足(比如当前是新建无名文档,或焦点不在编辑区而在菜单栏)。











