Sublime侧边栏右键菜单需通过Packages/User/Context.sublime-menu配置,用{"key":"node_type","operand":"sidebar"}限定显示位置,配合selection_empty等条件过滤上下文,变量如$file_path须不加引号使用,命令缺失或路径错误均静默失效。

Sublime 的侧边栏右键菜单不能靠改设置开关实现,必须写 JSON 配置文件,且只认 Packages/User/Context.sublime-menu 这一个路径——放错位置、命名不对、命令不存在,都会静默失效,不报错也不显示。
怎么让菜单项只出现在侧边栏?
默认所有 Context.sublime-menu 项在编辑区、标签页、侧边栏右键都出现。想限定到侧边栏(比如“在终端中打开当前目录”),得用 context 过滤。
-
"node_type"是最可靠的判断依据:侧边栏点击时值为"sidebar",文件节点是"file"或"folder" - 同时满足“侧边栏 + 有文件被选中”:
{"key": "node_type", "operand": "sidebar"}和{"key": "selection_empty", "operator": "equal", "operand": false} - 只对文件夹生效(如新建子目录):
{"key": "node_type", "operand": "folder"} - 别用
"setting.sidebar_visible"判断——它只表示侧边栏是否打开,不是右键位置
为什么点了没反应?三个“找不到”最常见
右键菜单项存在但点击无反应,90% 是以下三类问题,而非 JSON 语法错误:
-
找不到命令:写了
"command": "open_in_terminal",但没装 Terminal 插件,或插件被禁用 -
找不到上下文:用了
$file_path,却在侧边栏空白处右键(此时无选中项),参数为空导致命令跳过执行 -
找不到路径:Windows 用户常把
Context.sublime-menu放进Packages/Default/或插件目录,实际只读取Packages/User/
调试技巧:加一条 {"caption": "DEBUG", "command": "echo", "args": {"message": "$scope"}},右键看控制台输出,确认是否加载了该配置。
变量怎么用才不踩坑?
$file、$file_path、$folder 等变量只在有对应上下文时才有值,且不能加引号包裹。
-
"args": {"path": "$file_path"}✅ 正确:变量会被替换为真实路径 -
"args": {"path": "$file_path"}❌ 错误:加了多余引号,传过去就是字面字符串"$file_path" - 在编辑区右键时,
$file可能为空;但在侧边栏右键文件节点时,$file才有效 -
$folder指项目根目录,仅当文件属于已加载的项目时才非空
SideBarEnhancements 插件要不要装?
原生 Sublime 不提供“新建文件”“复制路径”“在终端打开”等侧边栏功能,SideBarEnhancements 是最稳定、开箱即用的解决方案。
- 安装后自动注入大量实用菜单项,无需手写 JSON
- 它的命令(如
side_bar_new_file、side_bar_open_in_terminal)可直接在Context.sublime-menu中调用 - 不要去改
Packages/SideBarEnhancements/side_bar.py——升级会覆盖;自定义应通过Packages/User/Side Bar.sublime-menu重映射 - 若只需少量功能(如仅加“复制路径”),可单独装
CopyFilePath插件,再配"command": "copy_path"
真正容易被忽略的是:所有变量和命令都依赖上下文是否就绪,而 Sublime 对失败完全静默——它不会提示“命令不存在”或“变量为空”,只会让菜单项消失或点击无效。











