sidebarenhancements插件仅提供基础new file功能,要支持模板需自定义new_file_with_template.py命令和context.sublime-menu菜单文件,并严格遵循路径、编码、context条件及命令执行顺序。

装了插件也不显示「New File」,或者点了没反应——不是配置错了,是根本没放对文件、没写对 context、也没配对命令。
SideBarEnhancements 必须装,但只解决“有菜单”,不解决“带模板”
原生 Sublime Text 侧边栏右键根本没有 New File 选项,这不是设置问题,是功能缺失。SideBarEnhancements 插件补上了这个空缺,但它默认只调用 side_bar_new_file 命令,该命令创建的是纯空白视图,不读任何配置、不支持变量注入、也不插入内容。
- 改
Settings – User里的"template"字段完全无效——插件源码里压根没解析这一项 - 在
Packages/SideBarEnhancements/下直接改 Python 文件?升级后覆盖,且易破坏依赖 - 真正能生效的路径只有
Packages/User/new_file_with_template.py,它必须继承sublime_plugin.WindowCommand
Packages/Context.sublime-menu 还是 Packages/User/Context.sublime-menu?
这是最常踩的坑:侧边栏右键菜单只读 Packages/Context.sublime-menu(注意:没有 /User/),而编辑区右键才读 Packages/User/Context.sublime-menu。两个路径互不干扰,放错就静默失效。
- Windows 正确路径:
%APPDATA%\Sublime Text\Packages\Context.sublime-menu - macOS 正确路径:
~/Library/Application Support/Sublime Text/Packages/Context.sublime-menu - 文件名必须全小写、后缀为
.sublime-menu、编码为 UTF-8;存成Context.sublime-menu.txt或用 ANSI 编码,菜单项直接消失
context 过滤必须写准,否则菜单项不出现或乱弹
菜单项写了但右键看不到?大概率是 context 条件没满足。侧边栏节点没有 selector 属性,不能靠语法类型判断,只能靠 node_type 和 is_folder 等硬字段。
- 限定只在侧边栏显示:
{"key": "node_type", "operand": "sidebar"} - 只对选中文件夹生效(避免点单个文件时也出现):
{"key": "is_folder", "operator": "equal", "operand": true} - 确保用户确实点了某个节点(排除空白处点击):
{"key": "selection_empty", "operator": "equal", "operand": false} - 多个条件并列即“且”关系,必须全部满足才显示
new_file_with_template.py 的关键细节
自定义命令的核心不是“写得多”,而是顺序和时机。视图刚创建时未必 ready,直接 v.insert() 容易插错位置或失败。
- 先调
self.window.new_file(),再用v.run_command("insert", {"characters": content})——别用v.insert() - 扩展名分流示例:
if ext == ".py": content = "#!/usr/bin/env python3\n\n",可加.js、.md分支 - 语法高亮必须显式设置:
v.set_syntax_file("Packages/Python/Python.sublime-syntax"),否则新建.py文件仍是 Plain Text -
$file_path等变量在args中必须不加引号,写成"args": {"path": "$file_path"}才会被替换
菜单项点了没反应,90% 是这三类“找不到”:找不到命令(插件没装或禁用)、找不到上下文($file_path 在空白处右键为空)、找不到路径(文件放错目录)。调试时加一条 {"caption": "DEBUG", "command": "echo", "args": {"message": "$scope"}} 看控制台输出,比反复猜更可靠。











