Sublime右键菜单需手动编辑Context.sublime-menu文件,编辑区等读User路径,侧边栏读Packages路径;文件名、JSON格式、command名、context条件四者必须全对才生效,错一则静默失效。

Sublime 的右键菜单不能靠图形界面配置,必须手动编辑 Context.sublime-menu 文件,且路径、命名、JSON 格式、command 名四者全对才生效;错一个,菜单就静默消失——不报错,也不提醒。
确认 Context.sublime-menu 放对了位置
编辑区(代码里右键)、标签页、空编辑区的菜单,只读 Packages/User/Context.sublime-menu;侧边栏(文件/文件夹上右键)则读 Packages/Context.sublime-menu(注意:没有 /User/)。两个路径完全独立,混放等于白配。
- 用
Preferences → Browse Packages…打开目录,直接进User文件夹新建或编辑文件,别自己拼路径 - 文件名必须是
Context.sublime-menu(C 大写,无空格,无.txt或.json后缀) - Windows 路径示例:
%APPDATA%\Sublime Text\Packages\User\Context.sublime-menu - macOS 路径示例:
~/Library/Application Support/Sublime Text/Packages/User/Context.sublime-menu - 保存时选“UTF-8 编码”,禁用 BOM;带 BOM 的 UTF-8 会导致中文
caption乱码或整个文件加载失败
写合法 JSON,command 名必须和命令面板里一模一样
Context.sublime-menu 是一个 JSON 数组,每个菜单项是对象。格式错一个逗号、少一个引号、多一个空格,整个文件就静默失效。
- 基础结构必须是:
[{"caption": "复制路径", "command": "copy_path"}](外层方括号不能漏) -
command值必须与命令面板中显示的 ID 完全一致:按Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),输入关键词搜,看到什么就填什么 - 内置命令如
sort_lines、toggle_comment可直接用;插件命令如open_in_terminal必须先装 Terminal 插件,否则该项不出现 - 自定义插件命令(比如
MyCustomCommand类)注册后,command字段要去掉Command后缀,填"my_custom" - 加分割线用:
{"caption": "-"},不能省略caption字段
用 context 精准控制菜单在哪出现
没加 context 的菜单项,会在编辑区、侧边栏、标签页所有右键位置都弹出来,干扰极大。必须按需过滤,否则改完发现“怎么哪都能点”。
- 只在侧边栏文件节点显示:
"context": [{"key": "node_type", "operand": "file"}] - 只在侧边栏文件夹节点显示:
"context": [{"key": "node_type", "operand": "folder"}] - 只在有文字选中时显示(编辑区):
"context": [{"key": "selection_empty", "operator": "equal", "operand": false}] - 多个条件并列即“且”关系,例如侧边栏只对已选中的文件生效:
"context": [{"key": "node_type", "operand": "file"}, {"key": "selection_empty", "operator": "equal", "operand": false}] - 别在侧边栏菜单里用
selector判断语法类型——侧边栏节点根本没有selector属性,写了也无效
args 里变量不加引号,$file_path 这类要原样写
传参给命令时,Sublime 会自动替换 $file、$file_path、$folder 等变量,但必须不加引号,否则当字面量处理,不会替换。
- 正确:
"args": {"path": "$file_path"} - 错误:
"args": {"path": "$file_path"}(引号内含空格或换行)或"args": {"path": "$file_path"}(用了中文引号) - 常见变量:
$file(当前文件完整路径)、$file_path(当前文件所在目录)、$folder(项目根目录) - 调试技巧:打开控制台,执行
sublime.log_commands(True),再手动触发一次目标功能(比如点“Reveal in Finder”),控制台会输出真实调用的command和args,照着抄最稳
最常被忽略的是:侧边栏和编辑区菜单根本不是同一个文件控制,且 context 不写或写错,会导致菜单出现在不该出现的地方,或者完全不出现——它不会告诉你哪里错了,只会沉默。


















