文件编辑器
Dinotty 内建文件浏览器(左侧文件树 + 右侧编辑/预览区),右侧基于 Monaco 编辑器,支持分屏、多光标编辑与跨文件同步。
分屏
| 操作 | 快捷键 |
|---|---|
| 水平分屏(新面板在右侧) | Cmd + \(Windows/Linux Ctrl + \) |
| 垂直分屏(新面板在下方) | Cmd + Shift + \ |
| 关闭当前编辑面板 | Cmd + W(文件浏览器焦点时) |
| 切换到下一个 / 上一个面板 | Cmd + Shift + ] / [ |
| 当前面板最大化 / 还原 | Cmd + Shift + Enter |
| 等分所有面板 | Cmd + = |
| 在新分屏中打开文件 | 文件树中 Cmd/Ctrl + Click 文件 |
分屏布局按 Tab 粒度持久化到 localStorage,刷新后恢复。
多行编辑(多光标)
文件编辑器提供两类多光标编辑:Monaco 原生多光标(单文件内)与 Cursor Group(跨文件 / 跨分屏广播)。
Monaco 原生多光标
在编辑面板内直接使用 Monaco 内置快捷键,输入会同时落到所有光标位置,撤销 / 重做为单面板内的栈式行为:
| 操作 | macOS | Windows/Linux |
|---|---|---|
| 在指定位置加一个光标 | Option + Click | Alt + Click |
| 在下方 / 上方加光标 | Cmd + Option + ↓ / ↑ | Ctrl + Alt + ↓ / ↑ |
| 选中下一个相同词 | Cmd + D | Ctrl + D |
| 选中所有相同词 | Cmd + Shift + L | Ctrl + Shift + L |
| 列选择(鼠标拖动) | Shift + Option + 拖动 | Shift + Alt + 拖动 |
适合在单个文件内同时修改多处。
Cursor Group(跨文件 / 跨分屏广播)
针对「同一处改动需要落在多个文件或多个位置」的场景,例如重命名一个被多处引用的标识符。
操作流程:
- 在编辑面板内选中一个词(或把光标放在词上)。
- 按
Shift + L触发「跨文件添加光标」命令。 - Dinotty 调用 ripgrep 在工作目录下搜索所有匹配项,弹出 picker 供你勾选要加入光标组的命中。
- 确认后:
- 单文件命中:仍在当前面板内为该文件设置多个 selection,等价于多光标。
- 多文件命中:自动将每个文件分屏打开,每个面板内再设置多光标。
- 在任一面板输入,所有同组面板会同步收到相同改动。
Cmd + Z/Cmd + Shift + Z在光标组内整组撤销 / 重做。
Cursor Group 的撤销 / 重做仅对 active group 生效。如果切到了其他面板或 group,需要先点回原 group 任一面板再撤销。
Cursor Group vs 终端分屏广播
| 维度 | 终端分屏广播 | 文件编辑器 Cursor Group |
|---|---|---|
| 作用对象 | PTY 输入字节流 | Monaco 编辑器文本变更 |
| 触发方式 | 分屏后开启 broadcast 模式 | Shift + L 触发搜索 + picker 勾选 |
| 同步粒度 | 输入字符 | 文本增量(插入 / 删除区间) |
| 撤销行为 | PTY 自身 | 整组同步撤销 / 重做 |
支持的文件类型
| 类别 | 示例 | 行为 |
|---|---|---|
| 代码 / 脚本 | .rs .ts .py .go … | 语法高亮 + 可编辑 |
| 文档 | .md .txt .log | Markdown 渲染 / 纯文本 |
| 图片 | .png .jpg .gif .webp .svg | 缩放展示 |
| 视频 | .mp4 .webm .mov | 内置播放器 |
| 音频 | .mp3 .wav .flac | 播放控制 |
| Office | .docx .xlsx .pptx | 渲染预览(只读) |
| 二进制 / 其他 | — | 不展示内容,仅提示 |
保存
- 编辑后标题旁出现
●表示有未保存改动。 - 点击保存按钮或
Cmd + S写入文件。 - 同一文件在多个面板中打开时,各自独立跟踪 dirty 状态,保存以最后一次写入为准。
