Real-Fruit-Snacks/Surge

GitHub: Real-Fruit-Snacks/Surge

Surge 将 Markdown 命令笔记编译为带模糊搜索、变量替换和离线 PWA 功能的静态命令参考站点。

Stars: 0 | Forks: 0

# Surge 支持模糊搜索、变量替换和离线 PWA 的可搜索命令参考工具。 [![Version](https://img.shields.io/github/v/release/Real-Fruit-Snacks/Surge?color=89b4fa)](https://github.com/Real-Fruit-Snacks/Surge/releases) [![License](https://img.shields.io/github/license/Real-Fruit-Snacks/Surge?color=cba6f7)](LICENSE)
## 概述 Surge 是一个由 markdown 笔记生成的静态命令参考工具。只需将笔记放入 `notes/` 目录,运行 `build.py`,网站便会编译生成一个涵盖标题、分类、标签、笔记和代码块的模糊搜索索引。格式为 `` 的占位符会在用户界面中高亮显示,你可以设定一次变量值,在复制到剪贴板时即可自动完成替换。工作区(Workspaces)可以为不同环境(例如 Lab、Production 或自定义环境)保存命名的变量集合。 Fuse.js 驱动了模糊搜索功能,在整个索引范围内提供低于 50 毫秒的响应时间。Service worker 会缓存所有静态资源,从而在首次访问后实现完全离线功能。笔记采用带有 YAML frontmatter 的标准 markdown 格式编写,这使得 Surge 能够与 Obsidian 完全兼容。 在线演示地址:https://Real-Fruit-Snacks.github.io/Surge/ ## 主要功能 - **模糊搜索**:使用 Fuse.js 对标题、分类、标签、笔记和命令进行低于 50 毫秒的搜索。 - **变量替换**:高亮显示 `` 字段,并在复制时自动替换为相应的值。 - **环境工作区**:针对不同环境保存并切换自定义的变量集合。 - **Catppuccin 主题**:支持四种 Catppuccin 配色:Mocha、Macchiato、Frappe 和 Latte。 - **离线功能**:构建为 Progressive Web App (PWA),利用 service worker 实现完全离线访问。 - **Markdown 兼容性**:支持带有 YAML frontmatter 的标准 markdown 文件,与 Obsidian 兼容。 - **极简构建**:使用 Python 3 标准库进行编译,无需 Node 或 npm 依赖。 - **平台支持**:在 Chrome、Firefox、Safari、Edge 上完全兼容搜索、变量替换、主题切换、键盘导航、复制功能和语法高亮等功能。 ## 开始使用 / 安装说明 ### 前置条件 - Python 3.7 或更高版本 ### 安装指南 克隆仓库并构建搜索索引: ``` git clone https://github.com/Real-Fruit-Snacks/Surge.git cd Surge # 从 markdown 笔记构建搜索索引 python3 build.py # 启动本地 web 服务器 python3 -m http.server 8080 --directory site ``` 打开浏览器并访问 `http://localhost:8080` 即可进入操作界面。 验证构建和服务器状态: ``` # 验证生成的索引文件 ls -la site/commands.json # 验证本地服务器响应 curl -s http://localhost:8080 | head -n 5 ``` ## 使用说明 ### 键盘快捷键 - `/`:聚焦搜索框 - `方向键`:导航条目 - `Enter`:展开或折叠条目卡片 - `c`:复制命令到剪贴板 - `v`:打开变量面板 - `w`:切换代码自动换行 - `Escape`:清除搜索或关闭面板 ### 变量模板 命令中可以包含占位符: ``` ssh @ -p ``` 设置变量时会自动更新它们: ``` ssh admin@10.0.0.1 -p 22 ``` 工作区允许配置不同的变量: - **Lab 工作区**:`=10.0.0.50`,`=admin` - **Production 工作区**:`=192.168.1.100`,`=deploy` ### 笔记格式化 笔记的结构应当如下所示: ``` --- tags: [networking, linux] --- ## Searchable Card 标题 ### Step 标题 ```bash ssh @ -p ``` ``` Step headings containing `[optional]` are excluded from "Copy All" actions. ### Tag 过滤 Modify `site/config.js` to configure default visible tags: ```javascript const TOGGLES = [ { tag: 'Draft', label: 'Drafts', default: false }, { tag: 'Reference', label: 'Reference', default: true }, { tag: 'Lab', label: 'Lab Notes', default: false } ]; ``` ## 架构 / 文件结构 ``` Surge/ ├── build.py Markdown parser and index generator ├── site/ │ ├── index.html Single-page shell │ ├── app.js Application logic │ ├── config.js Filter tag configuration │ ├── styles.css Catppuccin themes and styling │ ├── commands.json Generated search index (gitignored) │ ├── sw.js Service worker for offline support │ └── vendor/ Bundled Fuse.js and Highlight.js ├── notes/ Markdown source files by category └── docs/ GitHub Pages project site ``` - **构建**:`build.py` 解析 markdown 并在 `site/commands.json` 生成 JSON 索引。 - **搜索**:Fuse.js 在浏览器中运行并高亮匹配的结果。 - **变量**:剪贴板工具使用工作区的值替换 `` 字符串。 - **主题**:通过 CSS 自定义属性和 `localStorage` 实现持久化。 - **离线**:Service worker 在安装时缓存所有静态资源。 - **部署**:静态站点可部署到任何 Web 服务器或在本地运行。 ## 贡献指南 在提交贡献之前,请先阅读 [CONTRIBUTING.md](CONTRIBUTING.md) 中的指南。 ## 许可证 本项目基于 MIT 许可证授权。详情请参阅 [LICENSE](LICENSE)。
标签:Markdown, PWA, SOC Prime, 前端, 命令参考, 开发工具, 数据可视化, 模糊搜索, 自定义脚本