0

0

sublime如何自定义侧边栏的右键新建文件模板?(进阶操作)

穿越時空

穿越時空

发布时间:2026-03-12 04:01:21

|

834人浏览过

|

来源于php中文网

原创

sublime text侧边栏右键默认无“新建文件”选项,需安装sidebarenhancements插件并配合自定义python插件(如new_file_with_template.py)实现带模板的右键新建功能,再通过user/side bar.sublime-menu重映射菜单命令。

sublime如何自定义侧边栏的右键新建文件模板?(进阶操作)

Sublime Text 侧边栏右键菜单不显示“新建文件”选项

默认安装的 Sublime Text 不提供侧边栏右键“新建文件”功能,这是原生缺失项,不是配置错了。官方只支持通过 Ctrl+N 新建空标签页,再手动保存为文件——没法直接在目标文件夹里建新文件。

要实现右键新建,必须借助插件,且不能只装一个:需要组合使用 SideBarEnhancements(提供右键菜单) + 手动配置模板逻辑(它本身不支持模板)。

  • SideBarEnhancements 安装后,右键会多出 New FileNew Folder 等选项,但点开只是新建空白文件,不带内容
  • 它不读取 sublime-settings 或项目配置里的“模板”,也没有内置变量(如 ${date}${filename})支持
  • 如果你双击新建的空文件再粘贴模板,效率反而更低,和不用插件没区别

用 PluginBuilder + Python 脚本注入自定义模板

真正可控的方式是写一个极简插件,监听右键点击“New File”,创建文件时自动写入预设内容。这比改菜单 JSON 或 hack 插件源码更稳定、可维护。

步骤如下:

  • 在 Sublime 的 Packages/User/ 目录下新建文件,命名为 new_file_with_template.py
  • 内容只需 20 行左右,核心是重载 side_bar_new_file 命令,调用 window.run_command("new_file") 后立即插入模板文本
  • 模板内容可硬编码,也可按扩展名分流:if ext == ".py": content = "#!/usr/bin/env python3\n\n"
  • 注意:不要用 view.run_command("insert", {"characters": content}) 直接插,得等视图就绪,否则可能插到错误位置;推荐用 view.replace(...) 配合 view.sel().clear() 清空初始光标选区
import sublime
import sublime_plugin
<p>class NewFileWithTemplateCommand(sublime_plugin.WindowCommand):
def run(self, paths=None):
v = self.window.new_file()
v.set_syntax_file("Packages/Python/Python.sublime-syntax")
v.run_command("insert", {"characters": "#!/usr/bin/env python3\n\n"})</p>

让右键菜单真正调用你的模板命令

仅写好插件还不够,SideBarEnhancements 默认绑定的是它自己的 side_bar_new_file,你得覆盖它的菜单项指向。

ColorMagic
ColorMagic

AI调色板生成工具

下载

编辑 Packages/SideBarEnhancements/side_bar.py 是高危操作(升级插件会被覆盖),正确做法是:在 Packages/User/Side Bar.sublime-menu 中重定义右键菜单。

  • 这个文件不存在就新建,Sublime 会优先加载 User/ 下同名菜单文件
  • 找到原菜单中 "caption": "New File" 的那一项,把 "command": "side_bar_new_file" 改成 "command": "new_file_with_template"
  • 确保命令名和你 Python 文件里 class 名的驼峰转下划线一致(NewFileWithTemplateCommandnew_file_with_template
  • 改完保存,无需重启,右键菜单立刻生效;如果没反应,打开 Sublime 控制台(Ctrl+`),看是否有 ImportError 或命令未注册提示

模板内容动态化与路径上下文获取

纯静态模板很快就不够用——比如想让新建的 index.html 自动填入当前项目名,或根据父文件夹名生成类名。这时得从 paths 参数里挖信息。

paths 是右键点击时传入的路径列表(单击是长度为 1 的数组),你可以用 os.path.basename(paths[0]) 拿到文件夹名,或用 sublime.active_window().folders() 查当前工作区根目录。

  • 别直接拼接字符串生成文件名,用 os.path.join(paths[0], "newfile.py") 更安全,避免 Windows 路径斜杠问题
  • 如果右键点的是文件而非文件夹,paths[0] 是文件路径,需先 os.path.dirname(paths[0]) 提取父目录
  • 模板里写 <!-- Project: ${project_name} --> 这种占位符没用,Sublime 不解析;必须在 Python 里用 .format() 或 f-string 实时替换
  • 中文路径在 Windows 上容易出 UnicodeEncodeError,建议统一用 v.insert(edit, 0, content) 替代 replace,更兼容

复杂点在于:右键动作触发快,但窗口、视图、路径上下文未必都就绪。最稳的做法是把实际写入逻辑包进 set_timeout 延迟一帧,避开初始化竞争。这事容易被忽略,结果就是模板有时出现、有时空白。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

455

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

546

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

334

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

82

2025.09.10

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

1010

2023.08.02

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

846

2023.08.22

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

887

2023.07.31

python中的format是什么意思
python中的format是什么意思

python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

461

2024.06.27

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

3

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号