sublime text 仅是文本编辑器,无法独立开发健身计划追踪系统;需配合python/node.js、sqlite/json、浏览器等外部工具链实现完整功能。

Sublime Text 本身不是开发环境,它只是一个文本编辑器,不能直接“开发”健身计划追踪系统——没有运行时、没有数据库、没有 HTTP 服务器。想用它做这类系统,你实际需要的是:用 Sublime 编辑代码,再靠外部工具链(Python/Node.js + SQLite/JSON 文件 + 浏览器或终端)来执行和展示。
为什么不能只靠 Sublime 实现完整系统
Sublime Text 不提供以下能力:
- 无法执行
import sqlite3或fetch()请求,它不解释代码 - 没有内置数据库,
data.db文件得你自己用 Python 或命令行创建并维护 - 补剂提醒依赖系统通知(如
notify-send或osascript),Sublime 本身不触发这些 - 动作库管理若需搜索/过滤/预览 GIF,得靠 HTML+JS 在浏览器里跑,Sublime 只能写
index.html,不能打开并交互
Sublime 能高效支持哪些环节
它真正擅长的是:快速编写、组织、跳转和批量修改结构化内容。适合以下具体任务:
- 用
JSON或YAML写动作库:squats.yaml包含name、muscles、video_url,Sublime 的多光标和正则替换(Ctrl+H→Find: (name: .*))能秒改 50 个动作的分类字段 - 写 Python 脚本逻辑时,用
SublimeLinter+flake8实时标出print(“hello”)中的中文引号错误 - 补剂提醒配置可存为
supplements.json,用 Sublime 的Ctrl+Shift+P→JSON: Reindent保证格式合法,避免json.decoder.JSONDecodeError - 配合
Terminal插件,快捷键Ctrl+Shift+T直接在项目根目录运行python tracker.py --today
补剂提醒功能落地的关键路径
提醒不是弹窗就完事,得解决「准时」「可关闭」「跨重启持续」三个硬需求:
- 别用
time.sleep(3600)做轮询——Python 进程退出就停了;改用系统级定时器:crontab -e(Linux/macOS)或任务计划程序(Windows),定期调用python remind.py -
remind.py里判断当前时间是否匹配用户设置的"vitamin_d": "08:00",用datetime.now().strftime("%H:%M") == reminder_time,别用字符串in匹配,否则"08"会误触发"108:00" - 通知本身:Linux 用
subprocess.run(["notify-send", "补剂", "该吃维生素D了"]);macOS 用osascript -e 'display notification "该吃维生素D了" with title "健身助手"';Windows 用win10toast库(需pip install win10toast)
动作库管理中容易被忽略的细节
动作数据看着简单,但查起来很痛,尤其当你想按“肩部+自重+新手”筛选时:
- 别把肌肉分组写成
"muscles": "deltoids, trapezius"字符串——查询必须用if "deltoids" in item["muscles"],一旦中间多空格或大小写不一致就失效;改用数组:"muscles": ["deltoids", "trapezius"] - GIF 预览路径别写死相对路径如
./gifs/pushup.gif,Python 读取时要用os.path.join(os.path.dirname(__file__), "gifs", "pushup.gif"),否则移到其他文件夹就 404 - 动作名带括号(如
"Push-up (wide)")在 JSON 里合法,但某些前端模板引擎会把它当 JS 表达式解析出错;加个slug字段:"slug": "push-up-wide"专供 URL 和 ID 使用
真正卡住进度的往往不是语法,而是数据结构没对齐——比如补剂提醒时间存成 "08:00 AM",而 Python 的 strptime 默认不认 AM,一解析就抛 ValueError;或者动作库导出 JSON 时忘了 ensure_ascii=False,中文全变 \u4f53,自己都看不懂。这些坑不在 Sublime 里,但在你用 Sublime 写的每一行数据定义里。











