Sublime侧边栏右键菜单仅由Packages/User/Context.sublime-menu控制,其他路径无效;文件名大小写敏感、编码为UTF-8、后缀必须为.sublime-menu;需用context字段(如node_type:"sidebar")限定显示位置;命令名与变量(如$file_path)须严格匹配,否则静默失效。

Sublime 侧边栏右键菜单只能通过 Packages/User/Context.sublime-menu 文件控制,其他路径(包括 Packages/Default/ 或插件目录)放了也无效,不会报错,但新加的项根本不会出现。
菜单文件必须放在 Packages/User/ 目录下
打开 Preferences → Browse Packages…,进 User 文件夹,新建或编辑 Context.sublime-menu。注意三点:
- 文件名必须是
Context.sublime-menu(大小写敏感,不能是context.sublime-menu或Context.menu) - 编码必须是 UTF-8(Windows 记事本另存为时要选“UTF-8”,别用 ANSI)
- 后缀必须是
.sublime-menu,不是.txt—— macOS/Linux 用户尤其要注意隐藏扩展名导致误存
只在侧边栏生效得靠 context 字段过滤
默认所有菜单项会在编辑区、标签页、侧边栏右键都出现。想让它只出现在侧边栏(比如“在终端中打开当前目录”),必须加 context 条件:
[{
"caption": "Open in Terminal",
"command": "open_in_terminal",
"args": {"dir": "$file_path"},
"context": [
{"key": "node_type", "operand": "sidebar"}
]
}]
node_type 是最可靠的判断依据。常见组合:
- 仅对选中的文件生效:
{"key": "selection_empty", "operator": "equal", "operand": false} - 仅对文件夹生效:
{"key": "is_folder", "operator": "equal", "operand": true} - 同时满足侧边栏 + 有文件被选中:
node_type和selection_empty两个条件并列写在context数组里
命令名和变量必须严格匹配,否则静默失效
菜单项点了没反应,90% 是这三类“找不到”:
-
找不到命令:比如写了
"command": "open_in_browser",但没装Open In Browser插件,或插件被禁用;可在命令面板(Ctrl+Shift+P)搜一下确认命令是否存在 -
找不到上下文:比如用了
$file却在侧边栏空白处右键(此时无文件被选中),参数为空,命令直接跳过 -
变量写成字符串:
"args": {"path": "$file_path"}是对的;但写成"args": {"path": "$file_path"}(加了引号)就传了字面字符串,不是真实路径
加分割线、图标、嵌套菜单的细节
分隔线必须写成对象:{"caption": "-"},不能只写 "-";图标不显示?检查注册表(Windows 系统级右键)或插件是否支持 icon 参数(Sublime 内部菜单一般不显图标);嵌套菜单目前 Sublime 不原生支持,所谓“子菜单”其实是靠第三方插件(如 SideBarEnhancements)模拟的,不是 Context.sublime-menu 能直接定义的。
真正容易被忽略的是:改完保存后不用重启 Sublime,但如果你点右键没反应,先打开控制台(Ctrl+`),输 sublime.log_commands(True),再右键看有没有命令输出——没有输出,说明文件压根没加载,大概率是路径或命名错了。

















