# 基本编辑能力 > 来源:https://www.wolai.com/wolai/qN1Bh9YjLAXs8bxCJoAJ6C > 用途:mnote 编辑器基础交互行为参考 > > 实现状态:**大部分已实现** ✅ 11/18 🔧 3/18 ❌ 4/18 ## 实现对照 ## 核心概念 wolai 的编辑能力基于**块编辑器(Block Editor)**模式而非传统的富文本编辑器。 一段文本、一个列表项、一个图片、一个文件等,都被称为"块"。不同的块承担不同的角色,组合在一起组成一篇文章或一个主页。 ## 功能清单 ### 块操作 | 操作 | 说明 | |------|------| | **拖动块** | 所有块可通过左侧 `::` 图标拖动,拖动时出现辅助线指示位置。拖到另一个块的左/右侧可形成分栏结构 | | **选中块** | 光标输入状态按 `Esc` 选中当前块;上下方向键切换选中块;`Shift+上下` 多选块 | | **块选中后 Enter** | 回到光标编辑状态 | | **块选中后 Ctrl+A** | 第一次选中当前块全部文本,第二次选中所有块 | | **在上方/下方插入块** | 鼠标悬停 `::` 上方/下方点击 `+`;或 Esc 选中块后按 `a`(上方)/ `b`(下方)| | **块布局显示** | `Ctrl+Shift+U` 显示/隐藏所有块的虚线框布局 | ### 分栏 将一个块拖到另一个块的左边或右边,拖拽辅助线从横线变竖线时放开,即可实现分栏。分栏的块可继续拖动调整位置关系。 ### 块转换 所有文本类块可互相转换:文本↔标题、待办列表↔数字列表、引述文字↔代码片段。文本类块转换为页面时,缩进结构变为页面内容。 三种转换方式: 1. **块菜单**:点击 `::` → 转换为 → 选择类型 2. **快捷键**:平台特定快捷键 3. **快捷命令菜单**:按 `/` → 选择"转换为xxx",或输入 `/zh + 块名拼音首字母`(如 `/zhlb` 转换为列表) ### 复制/粘贴 - `Ctrl+C / Ctrl+V` 标准复制粘贴 - `Ctrl+Shift+V` 粘贴并匹配样式 ### 缩进/取消缩进 - `Tab` 缩进(成为上一个块的子元素) - `Shift+Tab` 取消缩进 ### 文本样式 选中文字后出现文本样式工具条,支持:粗体、斜体、下划线、删除线、行内代码、行内数学公式、文字颜色/背景颜色。 ### 超链接 - `Ctrl+K` 创建超链接 - 选中文字后直接粘贴 URL 可快速创建超链接 ### 在页面中添加更多块 - 键入 `/` 唤起快捷命令菜单选择块类型 - 点击空行前面的 `+` 图标选择创建块类型 --- ## mnote 实现状态 ### ✅ 已实现 | 功能 | 证据 | |------|------| | 块概念(Block Editor 模式) | `EditorBlockType` 枚举定义 14 种块类型(`core-protocol/src/editor/model.rs:7`)| | 文本输入/换行/方向键 | leptos-tiptap island(`rust/spikes/leptos-tiptap-spike/src/lib.rs`)| | 拖动块(`::` 手柄) | `HANDLE_SHELL_SELECTOR` 常量,拖拽事件处理(`lib.rs:45-47`)| | 选中块(Esc / 方向键 / Shift 多选) | `TiptapSelectionState` 选择状态管理 | | 上方/下方插入块(a / b 快捷键) | 块手柄菜单中的插入操作 | | 块转换(文本↔标题↔列表等) | `EditorCommand` 中的 `ReplaceBlock` 命令(`editor/command.rs:22-26`)| | 复制/粘贴(含匹配样式) | `write_mnote_text_to_clipboard` 剪贴板操作 | | 缩进/取消缩进(Tab/Shift+Tab) | Tiptap 原生 `indent`/`outdent` | | 文本样式工具条(粗体/斜体/下划线/删除线/行内代码) | `TextMark::{Bold, Italic, Underline, Strike, Code}`(`editor/model.rs:33-39`)| | 超链接(Ctrl+K) | `TiptapLinkResource` + `TiptapMarkName::Link` | | 行内数学公式 | `TiptapExtension` 中包含数学公式扩展 | | 选中文字颜色/背景色 | `TiptapColorAttributes` / `TiptapHighlightAttributes` | ### ❌ / 🔧 未实现/待完善 | 功能 | 状态 | 说明 | |------|------|------| | 分栏 | ❌ | `columnsLayout` Tiptap 扩展未注册 | | 块布局显示(Ctrl+Shift+U)| ❌ | 无对应功能 | | 选中文字→页面引用 | 🔧 | `PageReference` 类型存在但快捷创建交互未实现 | | 脚注与注释 | ❌ | 无脚注/注释 Tiptap 扩展 |