Skip to content

第 4 章 · 交互模式:编辑器/命令/快捷键

本章目标:熟悉 TUI 界面分区与编辑器能力,掌握常用斜杠命令与快捷键,学会用消息队列在模型工作时"排队插话",并完成终端兼容性配置。

4.1 TUI 布局一览

交互模式界面自上而下分四个区域:

text
┌─────────────────────────────────────────────┐
│ Startup header  快捷键提示/已加载的 AGENTS.md │
│                 /模板/技能/扩展 清单           │
├─────────────────────────────────────────────┤
│ Messages        用户消息/回复/工具调用与结果    │
├─────────────────────────────────────────────┤
│ Editor          输入区(边框颜色指示思考等级)    │
├─────────────────────────────────────────────┤
│ Footer          目录/会话名/token与费用/当前模型│
└─────────────────────────────────────────────┘

Footer 的统计值得专门认识: 输入 token、 输出 token、R 缓存读、W 缓存写、CH 最近缓存命中率——这是控制成本的第一仪表盘。编辑器可能被临时替换(如内置 /settings 面板,或扩展提供的结构化问答 UI)。

4.2 编辑器的六项核心能力

功能操作
文件引用输入 @ 模糊搜索项目文件
路径补全Tab
多行输入Shift+Enter(Windows Terminal 用 Ctrl+Enter)
外部编辑器Ctrl+G 打开 $VISUAL/$EDITOR(Windows 为 Notepad,兜底 nano)
粘贴图片/文本Ctrl+V(Windows 用 Alt+V),或直接拖图进终端
执行 shell 命令!command 输出发给模型;!!command 不发给模型
bash
# 典型流:外部编辑器写长提示词 → 引用文件 → 提交
# Ctrl+G 打开 vim 写一段复杂的重构需求,保存退出后自动回到编辑器

把长提示词交给趁手的编辑器

超过三四行的需求描述建议 Ctrl+G 进外部编辑器书写:有语法高亮、可反复修改,比在小编辑框里挤一行高效得多。

4.3 常用斜杠命令清单

输入 / 触发命令补全(扩展可注册新命令、技能以 /skill:名称 出现、模板以 /模板名 展开)。日常最常用:

text
/model            切换模型          /resume      选择历史会话
/new              新建会话          /name <名>   给会话命名
/session          查看当前会话信息   /tree        会话树导航
/fork             从历史消息分叉     /clone       克隆当前分支为新会话
/compact [指令]   手动压缩上下文     /copy        复制上一条回复
/export [文件]    导出 HTML/JSONL   /share       上传为私有 GitHub gist
/hotkeys          显示全部快捷键     /quit        退出

管理类还有 /login/logout(凭据)、/settings(思考等级/主题/消息投递/传输方式)、/trust(保存项目信任)、/reload(重载快捷键/扩展/技能/模板/主题/上下文文件)。

4.4 高频快捷键

按键动作
Ctrl+C清空编辑器;连按两次退出
Escape取消/中断当前生成
Escape×2打开 /tree 会话树
Ctrl+L模型选择器
Ctrl+P / Shift+Ctrl+Pscoped models 正反循环
Shift+Tab循环思考等级
Ctrl+O折叠/展开工具输出
Ctrl+T折叠/展开思考块
Ctrl+X复制最后一条助手消息

所有快捷键可通过 ~/.pi/agent/keybindings.json 重映射,格式为 修饰键+键位(如 ctrl+shift+x),完整动作表用 /hotkeys 查看:

json
{
  "tui.editor.historyPrevious": "ctrl+p",
  "tui.input.submit": "enter"
}

注意官方提醒:把 tui.editor.historyPrevious 绑到 ctrl+p 后,在该编辑器上下文里 Ctrl+P 将不再用于模型循环。

4.5 消息队列:模型干活时怎么插话

模型正在执行时你仍可提交消息,两种排队语义:

  • Enter = steering(转向)消息:当前轮工具调用结束后立即送达,适合中途纠偏;
  • Alt+Enter = follow-up(跟进)消息:等智能体全部工作完成后才送达,适合追加下一步任务;
  • Escape 中止并把队列里的消息退回编辑器;Alt+Up 取回排队消息。

投递节奏可在 /settings 或 settings.json 配置:steeringModefollowUpMode 均默认 "one-at-a-time"(逐条等待响应),改为 "all" 则一次性全部送达。transport 可指定支持多传输方式的 provider 使用 "sse" / "websocket" / "auto"

4.6 终端兼容性配置

pi 依赖 Kitty keyboard protocol 做可靠的修饰键识别:

  • Kitty / iTerm2 常规模式:开箱即用;
  • iTerm2 全屏模式触控板滚动过慢:设置 → Advanced → 搜索 "Trackpad scrolls fast?" 设为 No;
  • Apple Terminal:本地回退机制可把普通 Return 当 Shift+Enter 处理,但 SSH 远程场景无效;
  • Windows Terminal 的 Alt+Enter 默认是全屏,需要按 terminal-setup 文档重映射后才能用作 follow-up 快捷键。

本章小结

  • TUI 四分区:header/messages/editor/footer,footer 是成本仪表盘;
  • 编辑器六大能力:@ 引用、Tab 补全、Shift+Enter 多行、Ctrl+G 外部编辑器、Ctrl+V 贴图、! 执行命令;
  • 消息队列区分 steering(Enter,即时纠偏)与 follow-up(Alt+Enter,完工后执行);
  • 快捷键皆可在 keybindings.json 重映射,/hotkeys 是权威清单;
  • 终端需支持 Kitty keyboard protocol,Windows Terminal 要手动处理 Alt+Enter 冲突。

🧪 随堂测验

点击你认为正确的选项。答错时会展示正确答案与原因解析。

1. 模型正在执行任务时按 Enter 提交消息,效果是?

2. 想粘贴一张截图给模型分析 UI,正确的操作是?

3. 关于 !!command 与 !command 的区别,正确的是?

4. Escape 连按两次会触发什么?

🛠️ 动手实践

  1. 用 Ctrl+G 在外部编辑器里写一个不少于 10 行的重构需求提交给 pi,对比小编辑框的体验差异。
  2. 让 pi 执行一个较长的任务,期间分别用 Enter 和 Alt+Enter 各排一条消息,观察两者的送达时机差异。
  3. /tree 重映射到你喜欢的按键组合,并用 /hotkeys 验证生效。

进入下一章:会话管理,让每一次工作都可追溯、可回滚。