必须安装Terminal等插件才能实现右键「在终端中打开」,Sublime Text自身不提供该命令;配置文件需置于~/Library/Application Support/Sublime Text/Packages/User/Context.sublime-menu,内容为合法JSON数组,含正确command名如open_terminal_file_folder。

右键菜单里加「在终端中打开」必须装插件
Sublime Text 本身不提供 open_in_terminal 或类似命令,直接写进 Context.sublime-menu 会静默失败——点击没反应,也不报错。你得先通过 Package Control 安装支持该功能的插件,比如 Terminal(老牌稳定)或 Terminus(功能更强但略重)。没装插件时,哪怕 JSON 格式完全正确,菜单项也纯属摆设。
- 推荐安装
Terminal:按Cmd+Shift+P→ 输入Package Control: Install Package→ 搜索并安装Terminal - 安装后,插件会注册命令
open_terminal_project_folder(打开项目根目录)和open_terminal_file_folder(打开当前文件所在目录) - 确认命令存在:按
Cmd+Shift+P输入open_terminal,能搜到对应命令才算就绪
手动编辑 Context.sublime-menu 的路径和格式陷阱
Mac 上唯一有效的配置位置是:~/Library/Application Support/Sublime Text/Packages/User/Context.sublime-menu。别去改 Packages/Default/ 下的同名文件,那是只读内置项,改了也没用;也别放在其他插件目录里,除非你在开发插件。
- 首次配置可直接新建该文件(Sublime 不会自动生成)
- 内容必须是合法 JSON 数组,最外层是
[...],每个菜单项是对象,含"caption"和"command"字段 - 分隔线用
{"caption": "-"},且"command"字段不能省略——哪怕只是占位,也要写成"command": "dummy" - 常见错误:多一个逗号、少一个引号、用了中文标点、
command名拼错(比如写成open_in_terminal而不是插件实际注册的open_terminal_project_folder)
让菜单只在文件/侧边栏等特定位置出现
默认右键菜单会在编辑区、侧边栏、标签页等多个地方弹出,但你往往只想让它在某个上下文生效。靠 context 字段控制,它是个数组,每项是一个条件对象。
- 只在「当前文件已打开」的编辑区右键时显示:
[{"key": "selector", "operator": "equal", "operand": "text"}] - 只在侧边栏(文件树)空白处右键时显示:
[{"key": "setting.sidebar_visible"}] - 只在有选中文本时显示:
[{"key": "selection_empty", "operator": "equal", "operand": false}] - 多个条件同时满足?用多个对象并列,Sublime 会做 AND 判断
终端打开行为依赖系统默认终端,且路径变量要写对
插件调用的是系统默认终端(macOS 是 Terminal.app 或 iTerm2),不会自动识别你用的 zsh/fish shell 配置,也不会加载你的 .zshrc 环境变量。如果终端打开后找不到 node、python 等命令,问题不在 Sublime,而在终端自身的 shell 初始化逻辑。
-
args中可用变量:$file_path(不含文件名)、$file(含完整路径)、$project_path(项目根目录) - 示例:打开当前文件所在目录
[{"caption": "在终端中打开文件夹", "command": "open_terminal_file_folder", "args": {"dir": "$file_path"}}] - 若想强制用 iTerm2,需额外配置插件(如
Terminal插件的设置里指定terminal为iTerm2)
~/Library/Application Support/... 这个深藏路径,误以为 Packages/User 就是当前 Sublime 窗口里 Preferences > Browse Packages… 打开的那个目录(其实它就是,但很多人没意识到要自己建 Context.sublime-menu 文件)。










