Sublime侧边栏右键菜单由Packages/User/Context.sublime-menu文件控制,需用context字段限定node_type为file或folder才生效,且依赖插件如SideBarEnhancements。

侧边栏右键菜单由哪个文件控制?
Sublime 的侧边栏右键菜单(即资源管理器右键)由 Context.sublime-menu 文件统一控制,不是单独的 “sidebar” 专用文件。它和编辑区右键共用同一个配置文件,但可通过 context 字段精准限定只在侧边栏生效。
必须放在用户包路径下:Packages/User/Context.sublime-menu。Windows 是 %APPDATA%\Sublime Text\Packages\User\,macOS 是 ~/Library/Application Support/Sublime Text/Packages/User/,Linux 是 ~/.config/sublime-text/Packages/User/。
- 别去改
Packages/Default/Context.sublime-menu——它是只读内置文件,改了也无效 - 别新建在
Packages/SideBarEnhancements/下——那是插件自己的目录,不参与菜单加载逻辑 - 文件必须是 UTF-8 编码,后缀严格为
.sublime-menu(不是 .txt)
怎么让菜单项只在侧边栏出现?
靠 context 字段过滤。侧边栏节点有明确的 node_type 属性,值为 "file" 或 "folder";而编辑区没有这个 key。所以最稳妥的写法是:
[{
"caption": "Open in Terminal",
"command": "open_in_terminal",
"args": {"dir": "$file_path"},
"context": [
{ "key": "node_type", "operator": "equal", "operand": "file" }
]
}]
- 想对文件夹也生效?把
"operand"改成"folder",或加一个"or"条件组(需 JSON 数组嵌套) - 只在空白处显示?用
{"key": "selection_empty", "operator": "equal", "operand": true} - 没加
context?那该菜单会在编辑区、标签页、侧边栏三处都出现——容易误触
命令名写错或插件没装,会怎样?
静默失败:点击菜单项毫无反应,控制台也不报错。这是 Sublime 的设计特性,不是你配错了。
-
open_in_terminal、copy_path等命令依赖插件(如 Terminal、SideBarEnhancements),没装就不可用 - 命令名大小写敏感:
open_in_terminal✅,OpenInTerminal❌ - 查命令名最准的方法:打开命令面板(
Ctrl+Shift+P),输入关键词看实时匹配项;或在控制台执行sublime.log_commands(True)后右键一次,看输出 - 变量如
$file_path只在侧边栏上下文有效;在编辑区右键时,$file可能为空
为什么“New File”点不动?常见权限与路径陷阱
SideBarEnhancements 的 New File 不是纯前端菜单,它要实际写入磁盘。失败往往不是配置问题,而是运行时环境卡住:
- 右键的是未加入项目的独立文件夹(比如直接拖进来的)→ 插件无法推导完整可写路径
- 目标路径在
Program Files(Windows)或系统受保护目录(macOS)→ 没写入权限,连弹窗都不出 - 项目根目录未设置 → 它可能 fallback 到 Sublime 安装目录下建文件(你会找不到)
- 解决办法:先用
Project → Add Folder to Project…把目标文件夹正式纳入项目,再右键空白处
手动添加 new_file_at 命令虽可行,但不如 SideBarEnhancements 稳定——它处理了路径解析、扩展名提示、焦点切换等细节,自定义命令容易漏掉这些。










