输入编辑器
输入编辑器是终端底部的圆角框组件:> 提示符、多行编辑、历史与 kill-ring、undo——这些文本编辑能力来自底层 pi-tui Editor;Mayfly 在其上叠加语境与增强。
斜杠命令语境
输入以 / 开头时编辑框变 primary 蓝框,并进入命令语境:
- 模糊补全 —— 查询按空白分 token、每个 token 做 subsequence 匹配、按得分排序;下拉里每条是
hint — description两段描述,Enter 接受预选项并提交。 - 空匹配提示 —— 模糊匹配落空时 hint 行提示
no matching command: /…(命令发现由补全下拉承担,无匹配时下拉自行关闭,这行提示是唯一信号)。 - 参数幽灵提示 ——
/command后至多一个空格时显示参数 hint(如/sessions [<session-id>]);未输分隔符时前置空格。
全部命令见斜杠命令参考。
! bash 模式
buffer 恰为 ! 时切入 bash 模式(! 不进 buffer),三重提示齐发:! 提示符、! shell mode 边框标签、shellMode 紫框色。提交后自动退回 prompt 模式。
命令由 Mayfly 自己的执行器运行,输出回显为 shell 卡(消毒后按流截断:各 200 行 / 64KB),失败保留 exit code N 行——刻意不进会话记录,模型看不到。prompt 与 bash 提交共用同一份历史(Up 召回不分模式)。
@ 文件补全
@ 触发文件路径补全:fd 优先(模糊打分后取前 20 条),fd 缺失时文件系统扫描回退(扫描上限 2000 条、建议上限 50 条)。补全范围是文件路径;命令参数补全暂缓。
# 技能调用
# 触发技能名补全(与斜杠补全同款模糊匹配,按来源层分组的 /skills 面板是完整清单)。提交时 #name 被重写为 /name 走 harness 的技能手势路径——会话流回显的是重写后的 /name,技能注入按注入上下文规则零行呈现。
大粘贴折叠
粘贴超过 10 行或 1000 字符的文本时,编辑器折叠为 [paste #N +M lines] 标记(全文存于编辑器、提交前自动展开,模型收到完整内容);会话流侧同样折叠为 3 行预览 + 提示行,Ctrl-O 展开同权。历史召回(Up)取展开全文。
Ctrl-G 外部编辑器
Ctrl-G 把当前草稿交给外部编辑器全屏编辑(mayfly.editorCommand 设置优先,其后 $VISUAL、再 $EDITOR):Mayfly 挂起渲染、让出终端给子进程,编辑器正常退出后恢复并回读全文(粘贴标记往返存活)。以 :cq 退出则视为取消,草稿原样保留。
Ctrl-V 粘贴图片
Ctrl-V 把剪贴板图片存入附件库,并在光标处插入 [image #N] 标记;提交时标记拆分为图片内容块进入消息。标记跨主题热切换存活。
依赖与限制:Linux 依次探测 wl-paste、xclip(3 秒超时);Windows 上单次 PowerShell 调用读取剪贴板图片或复制的文件(10 秒预算);macOS 上 osascript 读取剪贴板类目并把 TIFF-only 的复制经 sips 转换(5 秒预算)。单图 10MB、每条消息 8 张 / 30MB / 16M 像素;模型需具备图片输入能力(详见 FAQ)。
复制的文件在三平台都按原顺序整批粘贴:Ubuntu 文件管理器的 text/uri-list、Windows 资源管理器的 FileDropList、macOS 的 Finder 复制。只接受本地普通 PNG/JPEG/WebP/GIF 文件;远程 URI、目录和符号链接会显示拒绝原因。
编辑器语境键位
编辑器焦点下有一组语境键链(详见键位参考):Escape 依次放行补全弹层 → 关闭挂在上方的侧问面板 → 清空草稿 → 安全撤回刚提交的消息(不可撤回时才中断);Ctrl-C 从不撤回,它始终优先中断当前工作并保留下一条草稿,只有无可中断工作时才清空闲草稿或进入 1 秒内双击退出;Ctrl-S 把非空草稿 steer 注入当前 turn。↑/↓ 始终归编辑器历史(queue 面板只展示排队消息,不接管按键);滚轮与 PageUp/PageDown 在侧问面板挂着时滚动它,否则滚动会话流。
草稿存活
未提交的草稿、输入模式(含 bash 三件套)与提示历史镜像进 draft stash——/theme 热切换重建编辑器 fiber 后原样恢复,/theme light 这类刚提交的命令也不会从 Up 历史里消失。