Context.sublime-menu 文件必须严格置于 Packages/User/ 目录下,文件名、编码、JSON 格式及 command 值均需精确匹配,否则菜单静默失效;自定义新建文件功能需配合 Python 插件与正确上下文过滤。

Context.sublime-menu 文件必须放在 Packages/User/ 目录下才生效
Sublime Text 只加载 Packages/User/Context.sublime-menu 这一个路径的文件,其他位置全无效。放错路径(比如丢进 Packages/Default/、Packages/SideBarEnhancements/ 或随便建的子目录)会导致菜单静默失效——右键没变化、控制台不报错、也没任何提示。
正确操作路径:
- 菜单栏点击 Preferences → Browse Packages…,打开用户 Packages 目录
- 进入
User文件夹,直接在此处新建或编辑文件 - 文件名必须严格为
Context.sublime-menu(首字母大写、无空格、无.txt后缀) - 保存时编码选
UTF-8(不能带 BOM),Windows/macOS/Linux 路径示例如下:%APPDATA%\Sublime Text\Packages\User\Context.sublime-menu~/Library/Application Support/Sublime Text/Packages/User/Context.sublime-menu~/.config/sublime-text/Packages/User/Context.sublime-menu
command 值必须与命令面板完全一致
右键菜单项是否出现,取决于 command 字段能否在命令面板里搜到。写错大小写、多空格、少下划线,或者插件没装/被禁用,都会让该项彻底消失——不报错,也不提示。
验证方式:
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS) - 输入关键词(如
copy_path、open_in_terminal),看是否列出对应命令 ID - 内置命令如
sort_lines、toggle_comment开箱即用;插件命令需先安装,例如:copy_path需 CopyFilePath 插件,open_in_terminal需 Terminal 插件 - 自定义插件命令(如
MyCustomCommand类)注册后,command值要去掉Command后缀,写成my_custom
侧边栏“新建文件”必须配合 Python 插件才能带模板
原生 Sublime Text 侧边栏右键根本没 “New File” 选项;SideBarEnhancements 插件能补上,但它默认只新建空白文件——不读配置、不支持变量、不注入内容。
要实现带模板的新建功能,必须自己写插件:
- 在
Packages/User/下新建new_file_with_template.py,内容约 20 行,继承sublime_plugin.WindowCommand - 核心逻辑:先
self.window.new_file(),再用v.run_command("insert", {"characters": content})注入文本(别用v.insert(),视图可能未就绪) - 扩展名分流示例:
if ext == ".py": content = "#!/usr/bin/env python3\n\n" - 语法高亮必须显式设置:
v.set_syntax_file("Packages/Python/Python.sublime-syntax"),否则新建 .py 文件仍是 Plain Text 模式 - 菜单项的
context必须精准过滤:{"key": "node_type", "operand": "sidebar"}+{"key": "is_folder", "operator": "equal", "operand": true},避免在文件或空白处显示
JSON 格式稍有偏差就会静默失败
Context.sublime-menu 是一个 JSON 数组,语法稍有偏差(比如少逗号、引号错位、多括号、中文引号)就会被整个跳过——菜单不显示,控制台也不报错。
安全写法要点:
- 整体用方括号
[]包裹,每个菜单项是对象,字段用英文双引号 - 分隔线写成
{"caption": "-"},不可省略caption字段 - 变量如
$file_path在args中不加引号:"args": {"path": "$file_path"},写成"$file_path"就不会替换 - 推荐用 Sublime 自带的 JSON 高亮和校验:保存前按
Ctrl+Shift+P→ 输入Set Syntax: JSON,再按Ctrl+Shift+P→JSON: Validate
new_file_with_template.py 必须放在 User 目录,且不能依赖 SideBarEnhancements 的内部逻辑。


















