|
| 1 | +# Obsidian Workflowy 插件 |
| 2 | + |
| 3 | +一个强大的 Obsidian 插件,将 Markdown 笔记转换为 Workflowy 风格的大纲编辑器,提供流畅的块级编辑体验。 |
| 4 | + |
| 5 | +[English](README.md) |
| 6 | + |
| 7 | +## ✨ 功能特性 |
| 8 | + |
| 9 | +### 🎯 核心功能 |
| 10 | +- **双模式切换**:在传统 Markdown 编辑和 Workflowy 风格大纲编辑之间无缝切换 |
| 11 | +- **块级编辑**:类似 Workflowy 的层级结构和块操作体验 |
| 12 | +- **实时同步**:保持 Obsidian 原生 Markdown 格式,完全兼容现有笔记 |
| 13 | +- **零干扰设计**:采用功能隔离架构,不影响 Obsidian 原生 Markdown 编辑体验 |
| 14 | + |
| 15 | +### ⌨️ 快捷键操作 |
| 16 | +| 快捷键 | 功能 | |
| 17 | +|--------|------| |
| 18 | +| `Enter` | 创建新块 | |
| 19 | +| `Backspace` | 删除空块/合并块 | |
| 20 | +| `Tab` / `Shift+Tab` | 增加/减少缩进 | |
| 21 | +| `Ctrl+Shift+↑/↓` | 上下移动块 | |
| 22 | +| `Alt+Enter` | 折叠/展开块 | |
| 23 | +| `Ctrl+Enter` | 切换待办状态 | |
| 24 | +| `Ctrl+Z` / `Ctrl+Y` | 撤销/重做 | |
| 25 | +| `Ctrl+Backspace` | 清空块内容 | |
| 26 | +| `Ctrl+Shift+Backspace` | 删除当前块 | |
| 27 | +| `Alt+↑/↓` | 缩放导航(上一层/下一层) | |
| 28 | +| `↑/↓` | 块间导航 | |
| 29 | + |
| 30 | +### 🎨 界面特性 |
| 31 | +- **Workflowy 风格界面**:简洁的圆点标记和层级缩进线 |
| 32 | +- **折叠展开**:支持块的折叠和展开,聚焦重要内容 |
| 33 | +- **缩放功能**:点击圆点可缩放到特定块,专注编辑子内容 |
| 34 | +- **实时搜索**:快速查找和高亮匹配内容(支持高亮和过滤模式) |
| 35 | +- **拖拽重排序**:直观的拖拽操作重新排列块 |
| 36 | +- **多选操作**:支持多选块进行批量操作 |
| 37 | +- **主题切换**:内置多种主题,支持明暗模式 |
| 38 | +- **响应式设计**:完美适配桌面和移动设备 |
| 39 | + |
| 40 | +### 📝 编辑模式 |
| 41 | +- **源码模式**:直接编辑 Markdown 文本 |
| 42 | +- **Live Preview 模式**:实时渲染 Markdown,所见即所得 |
| 43 | + - 完整的 Markdown 格式支持(加粗、斜体、链接等) |
| 44 | + - 内部链接预览和导航 |
| 45 | + - 嵌入支持(图片、笔记、块引用) |
| 46 | + - 代码语法高亮 |
| 47 | + |
| 48 | +### 🔗 链接支持 |
| 49 | +- 内部链接(`[[笔记]]`)点击跳转 |
| 50 | +- 标题链接(`[[笔记#标题]]`)滚动并高亮 |
| 51 | +- 块引用(`[[笔记#^blockid]]`)精确导航 |
| 52 | +- 嵌入链接(`![[笔记]]`)点击跳转 |
| 53 | +- Ctrl+悬停显示预览弹窗 |
| 54 | +- Ctrl+Alt+点击或Shift+点击分屏打开 |
| 55 | + |
| 56 | +## 📖 使用方法 |
| 57 | + |
| 58 | +### 切换视图 |
| 59 | +**切换到 Workflowy 视图:** |
| 60 | +1. 打开任意 Markdown 文件 |
| 61 | +2. 使用命令面板(`Ctrl/Cmd+P`)搜索"切换大纲/Markdown视图" |
| 62 | +3. 或右键文件选择"打开为大纲笔记" |
| 63 | + |
| 64 | +**切换回 Markdown 视图:** |
| 65 | +1. 在 Workflowy 视图中,使用命令面板搜索"切换大纲/Markdown视图" |
| 66 | +2. 或右键选择"打开为Markdown" |
| 67 | + |
| 68 | +### 基础操作 |
| 69 | +- **创建块**:按 `Enter` 在当前块后创建新块 |
| 70 | +- **缩进管理**:使用 `Tab` 和 `Shift+Tab` 调整层级 |
| 71 | +- **移动块**:使用 `Ctrl+Shift+↑/↓` 或拖拽移动 |
| 72 | +- **折叠/展开**:点击三角形图标或按 `Alt+Enter` |
| 73 | +- **缩放聚焦**:点击圆点可缩放到该块,专注编辑其子内容 |
| 74 | +- **多选操作**:按住 `Ctrl` 点击多个块,可批量操作 |
| 75 | + |
| 76 | +### 搜索功能 |
| 77 | +- 点击搜索图标或使用顶部搜索栏 |
| 78 | +- **高亮模式**:高亮匹配内容,显示所有块 |
| 79 | +- **过滤模式**:仅显示包含搜索词的块 |
| 80 | +- 支持区分大小写选项 |
| 81 | + |
| 82 | +## 📦 安装方法 |
| 83 | + |
| 84 | +### 从 Obsidian 社区插件安装(推荐) |
| 85 | +1. 打开 Obsidian 设置 |
| 86 | +2. 进入"第三方插件" |
| 87 | +3. 关闭"安全模式" |
| 88 | +4. 点击"浏览"搜索"Workflowy Outline" |
| 89 | +5. 点击"安装"并启用插件 |
| 90 | + |
| 91 | +### 手动安装 |
| 92 | +1. 从 [Releases](https://github.com/user/obsidian-workflowy-plugin/releases) 下载最新版本 |
| 93 | +2. 解压到 Obsidian 插件目录:`{vault}/.obsidian/plugins/obsidian-workflowy-plugin/` |
| 94 | +3. 在 Obsidian 设置中启用插件 |
| 95 | + |
| 96 | +### 开发者安装 |
| 97 | +```bash |
| 98 | +# 克隆仓库 |
| 99 | +git clone https://github.com/user/obsidian-workflowy-plugin.git |
| 100 | +cd obsidian-workflowy-plugin |
| 101 | + |
| 102 | +# 安装依赖 |
| 103 | +npm install |
| 104 | + |
| 105 | +# 开发模式(监听文件变化) |
| 106 | +npm run dev |
| 107 | + |
| 108 | +# 生产构建 |
| 109 | +npm run build |
| 110 | +``` |
| 111 | + |
| 112 | +## ⚙️ 配置选项 |
| 113 | + |
| 114 | +### UI 设置 |
| 115 | +- **缩进大小**:自定义层级缩进距离(默认:30px) |
| 116 | +- **主题选择**:多种内置主题可选 |
| 117 | +- **显示圆点**:切换圆点标记显示 |
| 118 | +- **显示折叠指示器**:切换折叠箭头显示 |
| 119 | +- **动画效果**:启用/禁用界面动画 |
| 120 | + |
| 121 | +### 编辑器设置 |
| 122 | +- **渲染模式**:选择源码模式或 Live Preview 模式 |
| 123 | +- **自动保存**:启用自动保存,可配置延迟时间 |
| 124 | +- **占位符文本**:自定义空块占位符 |
| 125 | + |
| 126 | +### 搜索设置 |
| 127 | +- **搜索模式**:高亮模式或过滤模式 |
| 128 | +- **区分大小写**:切换大小写敏感搜索 |
| 129 | +- **自动展开匹配**:自动展开包含匹配内容的折叠块 |
| 130 | + |
| 131 | +### 拖拽设置 |
| 132 | +- **启用拖拽**:切换拖拽功能 |
| 133 | +- **显示放置指示器**:拖拽时显示视觉反馈 |
| 134 | +- **允许嵌套放置**:允许将块作为子块放置 |
| 135 | + |
| 136 | +### 折叠状态记忆 |
| 137 | +- **启用**:在文档中记住折叠状态 |
| 138 | +- **标记符**:自定义折叠状态标记(以 HTML 注释形式存储) |
| 139 | + |
| 140 | +## 🏗️ 技术架构 |
| 141 | + |
| 142 | +### 核心组件 |
| 143 | +- **BlockEditor**:块级编辑逻辑和状态管理 |
| 144 | +- **OutlineParser**:Markdown 与大纲结构的双向转换 |
| 145 | +- **WorkflowyView**:自定义视图组件 |
| 146 | +- **IsolationLayer**:功能隔离系统,确保不干扰原生 Obsidian |
| 147 | + |
| 148 | +### 数据流 |
| 149 | +``` |
| 150 | +Markdown 文件 ↔ OutlineParser ↔ BlockEditor ↔ WorkflowyView ↔ 用户界面 |
| 151 | +``` |
| 152 | + |
| 153 | +### 隔离架构 |
| 154 | +插件采用 5 层隔离架构设计: |
| 155 | +1. **ViewStateManager**:视图状态追踪 |
| 156 | +2. **IsolationLayer**:边界强制执行 |
| 157 | +3. **CommandProxy**:命令拦截 |
| 158 | +4. **EventDelegator**:事件隔离 |
| 159 | +5. **RuntimeValidator**:运行时验证 |
| 160 | + |
| 161 | +这确保了插件功能完全独立,不会影响 Obsidian 原生 Markdown 编辑体验。 |
| 162 | + |
| 163 | +## 🔧 兼容性 |
| 164 | + |
| 165 | +- **Obsidian 版本**:0.15.0+ |
| 166 | +- **平台支持**: |
| 167 | + - ✅ Windows / macOS / Linux 桌面端 |
| 168 | + - ✅ iOS / Android 移动端 |
| 169 | + - ✅ 平板设备(iPad / Android Tablet) |
| 170 | +- **主题兼容**:完美支持所有 Obsidian 主题,自动适配明暗模式 |
| 171 | + |
| 172 | +### 📱 移动端优化 |
| 173 | +- **触摸交互优化**:所有交互元素符合 44px 最小触摸目标标准 |
| 174 | +- **响应式布局**:自动适配不同屏幕尺寸 |
| 175 | +- **优化字体大小**:移动端使用 16px 字体,防止自动缩放 |
| 176 | +- **简化缩进**:移动端使用更小的缩进间距,节省屏幕空间 |
| 177 | +- **触摸拖拽**:支持触摸拖拽重排序 |
| 178 | +- **平台自动检测**:自动识别设备类型并应用相应优化 |
| 179 | + |
| 180 | +## 🤝 贡献指南 |
| 181 | + |
| 182 | +欢迎提交 Issue 和 Pull Request! |
| 183 | + |
| 184 | +### 开发环境设置 |
| 185 | +1. Fork 本仓库 |
| 186 | +2. 创建功能分支:`git checkout -b feature/your-feature` |
| 187 | +3. 提交更改:`git commit -am 'Add some feature'` |
| 188 | +4. 推送分支:`git push origin feature/your-feature` |
| 189 | +5. 创建 Pull Request |
| 190 | + |
| 191 | +### 开发规范 |
| 192 | +- 遵循 TypeScript 严格模式 |
| 193 | +- 保持功能隔离架构 |
| 194 | +- 添加适当的注释和文档 |
| 195 | +- 确保代码通过 ESLint 检查 |
| 196 | + |
| 197 | +## 📄 许可证 |
| 198 | + |
| 199 | +MIT License - 详见 [LICENSE](LICENSE) 文件 |
| 200 | + |
| 201 | +## 🙏 致谢 |
| 202 | + |
| 203 | +- 感谢 [Obsidian](https://obsidian.md/) 提供强大的插件 API |
| 204 | +- 灵感来源于 [Workflowy](https://workflowy.com/) 的优秀设计 |
| 205 | +- 参考了 [Obsidian Outliner](https://github.com/vslinko/obsidian-outliner) 的部分实现 |
| 206 | +- 感谢社区的反馈和贡献 |
| 207 | + |
| 208 | +## 💬 反馈与支持 |
| 209 | + |
| 210 | +- **问题反馈**:[GitHub Issues](https://github.com/user/obsidian-workflowy-plugin/issues) |
| 211 | +- **功能建议**:[GitHub Discussions](https://github.com/user/obsidian-workflowy-plugin/discussions) |
| 212 | +- **作者**:SpringRain | 公众号:及时春雨 |
0 commit comments