右键菜单仅在packages/user/context.sublime-menu生效;添加“复制文件路径”需先安装copyfilepath插件,再在该文件中添加含"copy_path"命令的项;控制显示位置需用context字段配合node_type判断;windows资源管理器集成须修改注册表,注意%1/%v、引号及反斜杠转义。

右键菜单不生效?先确认改的是哪个文件
Sublime 的右键菜单由 Context.sublime-menu 控制,但**只有放在 Packages/User/Context.sublime-menu 才生效**——这是唯一推荐且稳定的位置。你通过 Preferences > Browse Packages… 打开的目录里,进 User 文件夹新建或编辑这个文件即可。
常见错误现象:
- 改了
Packages/Default/Context.sublime-menu:无效,该路径只读,更新后会被覆盖 - 放错位置,比如丢进
Packages/SideBarEnhancements/:除非你在开发插件,否则不会加载 - 文件名拼错成
context.sublime-menu(小写)或Context.menu:Sublime 完全忽略
加一个“复制文件路径”菜单项,需要三步走
这不是内置命令,得靠插件提供。比如安装 CopyFilePath 后,它注册了 copy_path 这个命令名。直接写进菜单会静默失败——没报错,但菜单项不显示。
实操建议:
- 先装插件:
Ctrl+Shift+P→ 输入Package Control: Install Package→ 搜CopyFilePath并安装 - 再编辑
Packages/User/Context.sublime-menu,添加如下项:
[{
"caption": "复制文件路径",
"command": "copy_path"
}]
注意:caption 是显示文字,command 必须和插件实际注册的命令名完全一致(区分大小写),不能写成 copy_filepath 或 copy-path。
想让菜单只在侧边栏出现?用 context 字段控制
默认菜单项在编辑区、侧边栏、标签页右键都会出现。如果只想让它出现在侧边栏(比如“在终端中打开当前目录”),就得加条件判断。
关键点在于识别上下文:node_type 是最可靠的判断依据。
-
"node_type": "file"→ 仅当右键点击的是文件时显示 -
"node_type": "folder"→ 仅对文件夹生效 - 不加
context→ 全局显示(包括编辑区空白处)
示例:只在侧边栏点击文件时显示“在终端打开”:
[{
"caption": "在终端中打开",
"command": "open_in_terminal",
"args": {"path": "$file_path"},
"context": [
{ "key": "node_type", "operator": "equal", "operand": "file" }
]
}]
$file_path 是变量,不是字符串字面量——别加引号,否则传过去就是字面值 "$file_path",不是真实路径。
Windows 资源管理器右键加“用 Sublime 打开”,别碰 Sublime 配置文件
这是系统级集成,和 Sublime 内部的 Context.sublime-menu 完全无关。必须改 Windows 注册表,路径是 HKEY_CLASSES_ROOT*shell 和 HKEY_CLASSES_ROOTDirectoryBackgroundshell。
容易踩的坑:
-
%1和%V混用:%1用于单个文件,%V用于文件夹空白处,写反会导致路径为空或报错 - 路径含空格却没用英文双引号包裹可执行文件:
C:Program Files...必须写成"C:\Program Files\Sublime Text\sublime_text.exe" - 反斜杠没转义:注册表里所有
必须写成\,否则解析失败
最稳妥的做法是新建一个 .reg 文件,粘贴标准模板并替换路径,双击导入。改完若不立即生效,重启 explorer.exe 即可。
真正复杂的地方不在语法,而在路径、命令名、上下文三者的耦合:少一个条件,菜单就消失;错一个字符,就白忙活半小时。










