Skip to content

文件编辑器

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 内置快捷键,输入会同时落到所有光标位置,撤销 / 重做为单面板内的栈式行为:

操作macOSWindows/Linux
在指定位置加一个光标Option + ClickAlt + Click
在下方 / 上方加光标Cmd + Option + ↓ / Ctrl + Alt + ↓ /
选中下一个相同词Cmd + DCtrl + D
选中所有相同词Cmd + Shift + LCtrl + Shift + L
列选择(鼠标拖动)Shift + Option + 拖动Shift + Alt + 拖动

适合在单个文件内同时修改多处。

Cursor Group(跨文件 / 跨分屏广播)

针对「同一处改动需要落在多个文件或多个位置」的场景,例如重命名一个被多处引用的标识符。

操作流程:

  1. 在编辑面板内选中一个词(或把光标放在词上)。
  2. Shift + L 触发「跨文件添加光标」命令。
  3. Dinotty 调用 ripgrep 在工作目录下搜索所有匹配项,弹出 picker 供你勾选要加入光标组的命中。
  4. 确认后:
    • 单文件命中:仍在当前面板内为该文件设置多个 selection,等价于多光标。
    • 多文件命中:自动将每个文件分屏打开,每个面板内再设置多光标。
  5. 在任一面板输入,所有同组面板会同步收到相同改动。
  6. 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 .logMarkdown 渲染 / 纯文本
图片.png .jpg .gif .webp .svg缩放展示
视频.mp4 .webm .mov内置播放器
音频.mp3 .wav .flac播放控制
Office.docx .xlsx .pptx渲染预览(只读)
二进制 / 其他不展示内容,仅提示

保存

  • 编辑后标题旁出现 表示有未保存改动。
  • 点击保存按钮或 Cmd + S 写入文件。
  • 同一文件在多个面板中打开时,各自独立跟踪 dirty 状态,保存以最后一次写入为准。

基于 MIT 许可发布