sidebarenhancements插件默认只新建空白文件,不支持模板;需手动编写new_file_with_template.py命令并配置side bar.sublime-menu覆盖原菜单项,同时确保context.sublime-menu路径正确、context过滤精准、变量不加引号、语法高亮主动设置。

Sublime Text 侧边栏右键菜单默认没有「New File」,装了 SideBarEnhancements 插件也不等于能新建带内容的文件——它只提供空白文件,模板逻辑必须自己补。
为什么装了插件还是新建不出带模板的文件
因为 SideBarEnhancements 的 side_bar_new_file 命令本身不读取任何模板配置,也不支持变量注入。你改 Settings – User 里的 "template" 字段完全无效;插件没这个设计,JSON 配置层压根不处理文本插入逻辑。
- 常见错误现象:
New File点击后弹出空标签页,光标在顶部,没有任何注释、import 或 shebang - 误以为是路径或权限问题,其实根本没走到写入环节——它连“该写什么”都不知道
- 试图在
Packages/SideBarEnhancements/下直接改 Python 文件?升级插件时会被覆盖,且容易破坏依赖
真正起作用的是 new_file_with_template.py + Context.sublime-menu
必须自己写一个极简命令,再让右键菜单调用它,而不是改插件源码或瞎配 JSON。核心就两步:创建视图 + 主动插入内容 + 设置语法高亮。
- 文件位置:
Packages/User/new_file_with_template.py(不是插件目录,也不是Default) - 关键操作顺序不能错:先
self.window.new_file(),再v.run_command("insert", {"characters": content});别用v.insert(),视图可能还没 ready - 扩展名分流示例:
if ext == ".py": content = "#!/usr/bin/env python3\n\n",可加.js、.md分支 - 语法高亮必须显式设置:
v.set_syntax_file("Packages/Python/Python.sublime-syntax"),否则新建.py文件仍是 Plain Text 模式
Context.sublime-menu 必须放对位置,且 context 条件要精准
侧边栏右键菜单实际读取的是 Packages/Context.sublime-menu(注意:不是 Packages/User/ 下的同名文件),这是最容易踩坑的地方。放错路径,菜单项就静默消失,控制台也不会报错。
- 正确路径(Windows 示例):
%APPDATA%\Sublime Text\Packages\Context.sublime-menu - 必须包含
context过滤,否则菜单项可能出现在错误位置(比如编辑区右键也显示):{"key": "node_type", "operand": "sidebar"}是基础条件 - 只对文件夹生效(避免在单个文件上显示 New File):
{"key": "is_folder", "operator": "equal", "operand": true} - 变量如
$file_path必须不加引号,写成"args": {"dir": "$file_path"}才有效;写成"$file_path"就传了个字符串字面量
覆盖默认 New File 菜单项要用 Side Bar.sublime-menu
SideBarEnhancements 自己的菜单定义在插件目录里,你不能改它,但可以在 Packages/User/Side Bar.sublime-menu 中重定义同名菜单项,优先级更高。这比动 Context.sublime-menu 更安全,因为它只影响侧边栏的 New File 行为,不影响其他上下文。
- 菜单项
caption必须和原插件一致(比如"New File"),才能覆盖 -
command改成你自己的:"command": "new_file_with_template"(对应new_file_with_template.py里 class 名的下划线转小写) - 别漏掉
args:"args": {"paths": ["$file_path"]},确保命令拿到当前选中文件夹路径 - 如果菜单项点了没反应,先在命令面板按
Ctrl+Shift+P输入New File With Template测试命令是否存在
最常被忽略的是 Packages/Context.sublime-menu 和 Packages/User/Side Bar.sublime-menu 的路径差异,以及 node_type 和 is_folder 这两个 context 条件缺一不可——少一个,菜单就可能不出现,或出现在不该出现的地方。











