SideBarEnhancements插件默认不支持新建带模板内容的文件,需手动编写new_file_with_template.py命令并配置Side Bar.sublime-menu菜单项覆盖原功能,同时确保Context.sublime-menu路径正确、变量不加引号、语法高亮主动设置。

SideBarEnhancements 是必须装的,但装完不等于有模板
原生 Sublime Text 侧边栏右键根本没 “New File” 选项,这不是设置问题,是功能缺失。SideBarEnhancements 插件能补上这个空缺,但它默认只新建空白文件——你点 side_bar_new_file 命令,出来的就是个空标签页,不带任何内容、不读配置、不支持变量。
常见错误现象:
- 装了插件,右键有 New File,但新建后还得手动粘贴头部注释或 import 块
- 改了
Preferences → Package Settings → SideBarEnhancements → Settings – User,结果菜单项直接消失 - 以为在
Settings – User里加"template": "#!/usr/bin/env python3"就能生效,实际完全没反应
真正起作用的是 Python 插件 + Context.sublime-menu 联动
要让右键新建带内容,得自己写一个极简命令,再把侧边栏菜单指向它。不能改插件源码(升级就丢),也不能只靠 JSON 配置(它没法注入文本)。
实操要点:
- 在
Packages/User/下新建new_file_with_template.py,内容约 20 行,核心是继承sublime_plugin.WindowCommand,调用self.window.new_file()后立刻用v.run_command("insert", {"characters": "..."}) - 别用
view.insert()直接插——视图可能还没就绪,光标位置不准;insert命令更可靠 - 扩展名分流写法示例:
if ext == ".py": content = "#!/usr/bin/env python3\n\n",可按需加.js、.md分支 - 语法高亮要主动设:
v.set_syntax_file("Packages/Python/Python.sublime-syntax"),否则新建 .py 文件也可能是纯文本模式
Context.sublime-menu 必须放对位置,且 context 过滤要精准
Packages/User/Context.sublime-menu 是唯一有效的路径,放错位置(比如丢进 Packages/Default/ 或插件目录)会静默失效,右键菜单毫无变化。
关键过滤条件:
- 限定只在侧边栏出现:
{"key": "node_type", "operand": "sidebar"} - 确保用户点了某个节点(不是空白处):
{"key": "selection_empty", "operator": "equal", "operand": false} - 只对文件夹生效(避免在文件上显示 New File):
{"key": "node_type", "operand": "folder"} - 变量如
$file_path必须不加引号,写成"args": {"path": "$file_path"}才会被替换;写成"$file_path"就传了个字符串过去
调试建议:加一条 {"caption": "DEBUG", "command": "echo", "args": {"message": "$scope"}},右键看控制台输出,确认是否加载成功、上下文是否匹配。
SideBarEnhancements 的 New File 项必须被覆盖,不能共存
插件自带的 New File 菜单项绑定的是 side_bar_new_file 命令,你的模板命令叫 new_file_with_template,不显式重写菜单项,右键永远调不到你写的逻辑。
正确做法:
- 在
Packages/User/Side Bar.sublime-menu中重定义菜单(注意文件名是Side Bar.sublime-menu,不是Context.sublime-menu) - 复制插件原菜单结构,把
"command": "side_bar_new_file"替换成"command": "new_file_with_template" - 不要编辑
Packages/SideBarEnhancements/side_bar.py——升级插件时整个文件会被覆盖,你的修改直接丢 - 如果想保留插件其他功能(如 Copy Path、Open in Terminal),只换这一项即可,不影响其余菜单
最易忽略的一点:Sublime 不校验命令是否存在,new_file_with_template 命令名拼错、插件没 reload、或 Python 文件语法错误,都会导致点击无反应——看起来像菜单没生效,其实是命令根本没注册成功。

















