右键菜单不显示主因是路径错误、JSON非法或command未注册:侧边栏菜单须放Packages/Context.sublime-menu,编辑区菜单放Packages/User/Context.sublime-menu;command名须与命令面板完全一致;context条件需正确配置;变量应在args中无引号使用;JSON必须UTF-8无BOM且格式严格合法。

右键菜单项不显示,大概率是文件路径错了、JSON 格式非法,或者 command 名根本没注册——不是 Sublime “不支持”,而是它压根没加载你的配置。
Context.sublime-menu 放在哪?别信“Packages/User/”万能论
侧边栏右键和编辑区右键用的是两个完全独立的文件,不能混用:
- 编辑区(文本选中时)、标签页、空编辑区:只读
Packages/User/Context.sublime-menu - 侧边栏(文件/文件夹节点上右键):只读
Packages/Context.sublime-menu(注意:没有/User/) - 放错路径(比如丢进
Packages/Default/或插件目录)→ 静默失效,控制台无报错 - Windows 路径示例:
%APPDATA%\Sublime Text\Packages\Context.sublime-menu(侧边栏)或%APPDATA%\Sublime Text\Packages\User\Context.sublime-menu(编辑区)
command 名写错或插件没装,菜单项直接消失
command 字段必须与命令面板中实际存在的 ID 完全一致(大小写、下划线、有无后缀都算):
- 想用
copy_path,但没装 CopyFilePath 插件 → 该项不会出现在右键里 - 拼成
copy_filepath或CopyPath→ 同样不显示 - 验证方式:按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),输入关键词搜,看到才说明可用 - 内置命令如
sort_lines、reveal_in_finder可直接用;插件命令如open_in_terminal(Terminal 插件)、side_bar_new_file(SideBarEnhancements)需先安装对应插件
让菜单只在侧边栏出现,靠 context 不是靠文件名
即使你把菜单项写进了 Packages/Context.sublime-menu,不加 context 过滤,它也可能在编辑区意外弹出,或在侧边栏点击无响应:
- 侧边栏文件节点:用
{"key": "node_type", "operand": "file"} - 侧边栏文件夹节点:用
{"key": "node_type", "operand": "folder"} - 只对已选中的文件生效(排除空白处点击):
{"key": "selection_empty", "operator": "equal", "operand": false} - 多个条件并列即“且”关系,例如:
"context": [{"key": "node_type", "operand": "folder"}, {"key": "selection_empty", "operator": "equal", "operand": false}] - 别用
selector判断语法类型——侧边栏节点没有 selector 属性,写了也无效
变量 $file_path 等要在 args 里用,不能加引号硬编码
传参时若把变量当字符串字面量处理,命令会收到 "$file_path" 这个字面值,而不是真实路径:
- ✅ 正确:
"args": {"path": "$file_path"} - ❌ 错误:
"args": {"path": "$file_path"}(引号内是普通字符串,不会替换) - 常用变量仅在运行时解析:
$file(完整文件路径)、$file_path(目录路径)、$folder(项目根目录) - 这些变量只在
args对象里生效,写在caption或其他字段里不会被替换
最常被忽略的一点:JSON 文件必须是 UTF-8 编码且无 BOM,逗号不能少、引号不能单、括号不能漏——格式错一个字符,整个菜单就静默挂掉,连控制台都不报错。建议每次改完用 Sublime 自带的 JSON 语法高亮检查一下,再用在线校验器过一遍。


















