商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > Sublime Text如何自定义侧边栏右键菜单?

Sublime Text如何自定义侧边栏右键菜单?

  发布于2026-07-15 阅读(0)

扫一扫,手机访问

SideBarEnhancements 插件只解决了“有菜单”的问题,要想支持模板,还得自己动手写一个 `new_file_with_template.py` 命令,再配好 `Context.sublime-menu` 菜单文件。路径、编码、context 条件、命令执行顺序,哪一步出错都会失效。

Sublime Text如何自定义侧边栏右键菜单?

装了插件也不显示「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_typeis_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(),后者是底层 API,容易出问题。
  • 按扩展名分流的示例: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"} 才会被 Sublime 替换成实际路径。加了引号就变成普通字符串,永远不会被替换。

菜单项点了没反应,90% 的原因是这三类“找不到”:找不到命令(插件没装或禁用了)、找不到上下文($file_path 在空白处右键为空)、找不到路径(文件放错目录)。调试时加一条 {"caption": "DEBUG", "command": "echo", "args": {"message": "$scope"}} 看控制台输出,比反复猜测更靠谱。

本文转载于:https://www.php.cn/faq/2822283.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注