context.sublime-menu 文件必须严格置于 packages/user/ 目录下,命名精确为 context.sublime-menu(utf-8无bom),json格式合法且 command 与命令面板id完全一致,并通过 context 字段限定显示位置。

Context.sublime-menu 文件必须放在 Packages/User/ 目录下
Sublime Text 只加载 Packages/User/Context.sublime-menu 这一个路径的文件,其他位置全无效。放错路径(比如丢进 Packages/Default/ 或插件目录)会导致菜单静默失效——右键没变化、控制台不报错、也没任何提示。
操作步骤很直接:
- 菜单栏点击 Preferences → Browse Packages…,打开用户 Packages 目录
- 进入
User文件夹,检查是否存在Context.sublime-menu - 若不存在,新建纯文本文件,**严格命名为
Context.sublime-menu**(注意大小写、无空格、无.txt后缀) - 保存时选择编码为
UTF-8(不能带 BOM),Windows/macOS/Linux 路径示例如下:%APPDATA%\Sublime Text\Packages\User\Context.sublime-menu~/Library/Application Support/Sublime Text/Packages/User/Context.sublime-menu~/.config/sublime-text/Packages/User/Context.sublime-menu
JSON 格式必须合法,command 名必须完全匹配
整个文件是一个 JSON 数组,每个菜单项是对象。格式稍有瑕疵(比如少逗号、引号用中文、括号不闭合)就会让整个菜单失效,且不报错。
关键点:
-
"caption"是右键显示的文字,支持中文;"command"必须与命令面板中出现的 ID 完全一致(区分大小写、无空格、去掉Command后缀) - 验证方式:按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),输入关键词搜一下。搜不到copy_path,说明插件没装或被禁用;拼成copy_filepath或CopyPath,该项就彻底消失 - 内置命令如
sort_lines、reveal_in_finder可直接用;插件命令如open_in_terminal(需 Terminal 插件)、side_bar_new_file(SideBarEnhancements)得先装好对应插件 -
"args"里变量如$file_path是运行时替换的,**不能加引号写成"$file_path"**,否则传的是字面字符串
context 控制菜单只在指定位置出现
没加 context 的菜单项会在编辑区、侧边栏、标签页右键全部显示,非常干扰。实际使用中必须过滤。
常用条件组合:
- 只在侧边栏文件夹节点上显示:
{"key": "node_type", "operand": "folder"} - 只在 Python 文件编辑区显示:
{"key": "selector", "operator": "equal", "operand": "source.python"} - 只在侧边栏 + 有文件被选中时显示:
[{"key": "node_type", "operand": "sidebar"}, {"key": "selection_empty", "operator": "equal", "operand": false}] - 多个
context条件并列即“且”关系;selector在侧边栏节点上无效,别乱用
加分割线和调试技巧
想加横线?用 {"caption": "-"},注意 caption 字段不能省略,也不能写成 {"divider": true}(Sublime 不认)。
菜单没反应?优先查三件事:
- 打开 Sublime 控制台(
Ctrl+`),右键后看有没有loading Context.sublime-menu日志 —— 没这行说明文件根本没被读取 - 确认文件名是
Context.sublime-menu(首字母大写、无空格、无 .txt) - 删掉所有菜单项,只留一个最简单的:
[{"caption": "test", "command": "sort_lines"}],看是否出现 —— 排除 JSON 格式问题
侧边栏菜单和编辑区菜单共用同一个文件,但如果你需要更精细控制(比如只给侧边栏加终端命令),context 是唯一可靠手段;别指望靠文件名或路径区分行为。











