侧边栏右键菜单必须使用packages/context.sublime-menu路径(非user目录),文件需utf-8无bom编码,菜单项须配置context过滤(如node_type为sidebar、is_folder为true、selection_empty为false)且command与args严格匹配插件命令id和变量语法。

侧边栏右键菜单和编辑区右键菜单是两套完全独立的系统,用错路径就等于没配——菜单项静默消失,控制台也不报错。
侧边栏菜单必须用 Packages/Context.sublime-menu
不是 Packages/User/Context.sublime-menu,也不是插件目录下的任何同名文件。这个文件默认不存在,得手动创建。
- Windows 路径示例:
%APPDATA%\Sublime Text\Packages\Context.sublime-menu - macOS 路径示例:
~/Library/Application Support/Sublime Text/Packages/Context.sublime-menu - Linux 路径示例:
~/.config/sublime-text/Packages/Context.sublime-menu - 文件名大小写敏感,必须是
Context.sublime-menu(C 大写,无空格,无 .txt 后缀) - 保存时选 UTF-8 编码,禁用 BOM;带 BOM 会导致中文乱码或整个文件加载失败
菜单项必须加 context 过滤才能精准触发
不加 context,菜单项可能出现在编辑区、标签页甚至空白处,或者点了没反应——因为 Sublime 不知道你点的是文件、文件夹还是什么都没选中。
- 只在侧边栏出现:
{"key": "node_type", "operand": "sidebar"} - 只对文件夹生效(避免在单个文件上显示“New File”):
{"key": "is_folder", "operator": "equal", "operand": true} - 确保用户确实选中了某个节点(不是点在空白处):
{"key": "selection_empty", "operator": "equal", "operand": false} - 多个条件并列写在
context数组里,全部满足才显示
command 名和变量必须严格匹配,否则点击无效
菜单项点了没反应,90% 是这三类问题:命令根本不存在、上下文不满足、变量被当成了字面字符串。
- 先按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),搜关键词确认命令 ID 是否存在(比如open_in_terminal、side_bar_new_file) -
command字段值必须和命令面板里显示的 ID 完全一致(大小写、下划线、有无后缀都不能错) - 变量如
$file_path必须直接写在args里,不加引号:"args": {"path": "$file_path"};写成"$file_path"就传了字面字符串 - 内置命令(如
reveal_in_finder)可直接用;插件命令(如open_in_terminal)需先装对应插件且未被禁用
想新建带模板的文件?得自己写 Python 命令,不能只靠 JSON
SideBarEnhancements 插件自带的 side_bar_new_file 命令只建空文件,它不读配置、不支持变量、不插入内容——改 Settings – User 里的 "template" 字段完全无效。
- 在
Packages/User/下新建new_file_with_template.py(不是插件目录!) - 核心逻辑:调用
self.window.new_file()→ 等视图就绪 → 用v.run_command("insert", {"characters": content})插入内容 → 主动设置语法高亮:v.set_syntax_file("Packages/Python/Python.sublime-syntax") - 扩展名分流示例:
if ext == ".py": content = "#!/usr/bin/env python3\n\n" - 然后在
Packages/Context.sublime-menu中把菜单项的command指向你这个新命令,比如"command": "new_file_with_template"
最常被忽略的一点:侧边栏菜单的 context 条件必须同时满足“在侧边栏”+“选中文件夹”+“非空白点击”,少一个,菜单就不可见或不可用——这不是 bug,是设计机制。











