SideBarEnhancements右键菜单仅在项目内文件夹节点生效,需手动编辑Packages/User/Context.sublime-menu;自定义模板需配合Python插件与菜单项绑定,变量在渲染时求值,路径失效会导致静默失败。

SideBarEnhancements 插件本身不提供“自定义右键菜单项”的图形界面,所有菜单行为都由 Context.sublime-menu 文件控制;它只负责提供一批开箱即用的命令(如 side_bar_new_file),而菜单结构、显示条件、分组顺序,全靠你手动编辑 JSON 文件。
为什么右键菜单里没出现 SideBarEnhancements 的选项?
不是插件没装好,而是 Sublime 的上下文机制在起作用:
- 右键位置必须是侧边栏中的文件夹节点(包括项目根目录),对单个文件或空白处右键无效
- 该文件夹必须通过
Project → Add Folder to Project…显式加入项目——拖拽进窗口不算数 - 检查
Preferences → Settings – User里是否误加了"ignored_packages": ["SideBarEnhancements"],有就删掉 - 多个插件同时注册右键命令时会冲突,尤其是
AdvancedNewFile或旧版SideBarGit,它们可能劫持context事件
怎么安全修改右键菜单内容?
所有自定义都应在用户目录下操作,路径为:Packages/User/Context.sublime-menu(通过 Preferences → Browse Packages… 进入):
- 文件必须是 UTF-8 编码,后缀严格为
.sublime-menu,不能是.txt或其他 - 不要改
Packages/Default/Context.sublime-menu——它是只读压缩包,改了也不生效 - 每个菜单项是 JSON 对象,至少含
"caption"和"command"字段,例如:[{"caption": "New File", "command": "side_bar_new_file"}] - 用
{"caption": "-"}插入分隔线;context字段可限定仅在文件/文件夹/空白处生效(高级用法) - 变量如
$file_path、$folder只在对应上下文里有值,$file在文件夹节点上为空,别乱用
想加带模板的新建文件?得自己补逻辑
SideBarEnhancements 自带的 side_bar_new_file 命令只建空文件,不支持模板。要实现「右键 → New File → 选 Vue 模板」这类功能,需两步配合:
- 先写一个 Python 插件(比如
new_file_with_template.py),在Packages/User/下定义新命令(如new_file_from_template) - 再在
Context.sublime-menu里添加对应项:{"caption": "New Vue Component", "command": "new_file_from_template", "args": {"template": "vue"} } - 注意:命令名必须和插件中
class NewFileFromTemplateCommand(sublime_plugin.WindowCommand)的类名严格对应(去掉Command后缀并转驼峰) - 别指望改
Settings – User就能启用模板——那只是覆盖开关,不提供逻辑
真正容易被忽略的是上下文变量的生命周期:菜单渲染时变量已求值,但命令执行时若路径失效(比如文件被删、目录权限变更),side_bar_new_file 会静默失败,连错误提示都没有。调试时建议先在控制台执行 sublime.log_commands(True),再右键一次,看输出里有没有命令被调用。

















