Pi Agent 键盘快捷键定制
Pi Agent 的快捷键完全可定制。本章介绍默认快捷键配置以及如何创建自己的快捷键方案。
配置文件
快捷键配置文件位于 ~/.pi/agent/keybindings.json。
修改后执行 /reload 即可生效,无需重启。
快捷键格式
快捷键格式为 修饰键+按键,修饰键包括 ctrl、shift、alt、super,可以组合使用。
其中 super 需要终端能够单独上报该修饰键(通常依赖 Kitty 键盘协议)才会生效,不支持的终端里可能无效。
支持的按键分为以下几类:
| 类别 | 取值 | 示例 |
|---|---|---|
| 字母 | a-z | ctrl+b、alt+d |
| 数字 | 0-9 | alt+1 |
| 功能键 | f1-f12 | f2 |
| 方向键 | up、down、left、right | alt+left |
| 特殊键 | escape、enter、tab、space、backspace、delete、home、end、pageUp、pageDown | shift+enter |
| 符号 | ` - = [ ] ; ' , . / 等 | ctrl+]、ctrl+- |
配置文件中修饰键使用小写(例如 ctrl+shift+p),正文表格习惯写作 Shift+Ctrl+P,两者等价。
默认快捷键速查
以下四张表按功能区域列出出厂默认绑定,作为自定义时的对照基准。
本章仅列出常用绑定,ctrl+]、ctrl+alt+]、pageUp/pageDown、alt+y、ctrl+z 以及会话选择器按键等并未收录,完整列表可在交互模式中用 /hotkeys 查看。
编辑器操作
这一组只在编辑区生效,负责光标移动与文本删除。
| 操作 | 默认快捷键 | 说明 | 所在模式 |
|---|---|---|---|
| 光标上移 | up | 编辑器中向上移动光标,已在顶部时改为翻看更早的历史记录 | 编辑区 |
| 光标下移 | down | 编辑器中向下移动光标,已在底部时改为翻看更新的历史记录 | 编辑区 |
| 光标左移 | left, ctrl+b | 左移一个字符 | 编辑区 |
| 光标右移 | right, ctrl+f | 右移一个字符 | 编辑区 |
| 按词左移 | alt+left, ctrl+left, alt+b | 左移一个单词 | 编辑区 |
| 按词右移 | alt+right, ctrl+right, alt+f | 右移一个单词 | 编辑区 |
| 行首 | home, ctrl+home, ctrl+a | 跳到行首 | 编辑区 |
| 行尾 | end, ctrl+end, ctrl+e | 跳到行尾 | 编辑区 |
| 删除前一个字符 | backspace | 删除光标前的字符 | 编辑区 |
| 删除后一个字符 | delete, ctrl+d | 删除光标后的字符(属编辑动作) | 编辑区 |
| 删除前一个词 | ctrl+w, alt+backspace | 删除光标前的一个单词 | 编辑区 |
| 删除后一个词 | alt+d, alt+delete | 删除光标后的一个单词 | 编辑区 |
| 删至行首 | ctrl+u | 删除从光标到行首的内容 | 编辑区 |
| 删至行尾 | ctrl+k | 删除从光标到行尾的内容 | 编辑区 |
输入与提交
这一组控制内容如何换行、补全和提交,同样作用于编辑区。
| 操作 | 默认快捷键 | 说明 | 所在模式 |
|---|---|---|---|
| 换行 | shift+enter, ctrl+j | 插入换行符 | 编辑区 |
| 提交 | enter | 发送输入内容 | 编辑区 |
| Tab/自动补全 | tab | 触发路径自动补全 | 编辑区 |
| 撤销 | ctrl+- | 撤销上一步编辑 | 编辑区 |
| 粘贴已删文本 | ctrl+y | 粘贴最近删除的文本 | 编辑区 |
应用与消息
这一组负责打断 AI、管理编辑区内容和消息队列,多数不依赖编辑区焦点。
| 操作 | 默认快捷键 | 说明 | 所在模式 |
|---|---|---|---|
| 中断/取消 | escape | 取消当前 AI 操作 | 全局 |
| 清空编辑区 | ctrl+c | 清空编辑区内容,再按一次退出程序 | 编辑区 |
| 退出 | ctrl+d | 编辑区为空时退出程序(属 app.exit 动作,与上表的删除动作分开) | 编辑区 |
| 外部编辑器 | ctrl+g | 在外部编辑器中编辑当前输入 | 编辑区 |
| 粘贴图片 | ctrl+v | 从剪贴板粘贴图片(Windows: alt+v) | 编辑区 |
| 复制 AI 回复 | ctrl+x | 复制最后一条 AI 消息 | 编辑区 |
| 发送跟进消息 | alt+enter | 将消息排入跟进队列 | 编辑区 |
| 取回排队消息 | alt+up | 将排队消息取回编辑器 | 编辑区 |
模型与推理
这一组用于切换模型和调整推理行为,在对话过程中随时可用。
| 操作 | 默认快捷键 | 说明 | 所在模式 |
|---|---|---|---|
| 模型选择器 | ctrl+l | 打开模型选择器 | 全局 |
| 向前切换模型 | ctrl+p | 切换到下一个模型 | 全局 |
| 向后切换模型 | shift+ctrl+p | 切换到上一个模型 | 全局 |
| 切换推理等级 | shift+tab | 循环切换推理等级 | 编辑区 |
| 切换推理显示 | ctrl+t | 展开/折叠 AI 推理过程 | 全局 |
| 切换工具输出 | ctrl+o | 展开/折叠工具调用输出 | 全局(/tree 浏览器内为切换过滤模式) |
自定义快捷键配置
在 keybindings.json 中列出想覆盖的操作即可,未列出的操作保持默认。
把某个绑定的值写成空数组,例如 "tui.altScreen.pageUp": [],可以彻底禁用该快捷键。
Emacs 风格
如果你习惯 Emacs 的快捷键,可以在 ~/.pi/agent/keybindings.json 中使用以下配置:
实例
"tui.editor.historyPrevious": "ctrl+p",
"tui.editor.historyNext": "ctrl+n",
"tui.editor.cursorUp": ["up"],
"tui.editor.cursorDown": ["down"],
"tui.editor.cursorLeft": ["left", "ctrl+b"],
"tui.editor.cursorRight": ["right", "ctrl+f"],
"tui.editor.cursorWordLeft": ["alt+left", "alt+b"],
"tui.editor.cursorWordRight": ["alt+right", "alt+f"],
"tui.editor.deleteCharForward": ["delete", "ctrl+d"],
"tui.editor.deleteCharBackward": ["backspace", "ctrl+h"],
"tui.input.newLine": ["shift+enter", "ctrl+j"]
}
historyPrevious 和 historyNext 这两个历史记录动作默认没有绑定,专门用于翻阅提交历史,且在多行输入中也会切换历史条目。
把 ctrl+p 绑到历史上一条之后,编辑区获得焦点时 Ctrl+P 会被这条历史绑定抢占,模型向前切换在这个场景下暂时失效。
模型选择器等选择列表中的 Ctrl+P 不受影响,仍执行选择器自身的动作。
Vim 风格
如果你习惯 Vim 的方向键,可以使用以下配置:
实例
"tui.editor.cursorUp": ["up", "alt+k"],
"tui.editor.cursorDown": ["down", "alt+j"],
"tui.editor.cursorLeft": ["left", "alt+h"],
"tui.editor.cursorRight": ["right", "alt+l"],
"tui.editor.cursorWordLeft": ["alt+left", "alt+b"],
"tui.editor.cursorWordRight": ["alt+right", "alt+w"]
}
这里选用 alt+h/j/k/l,是为了避开 Ctrl+H/Ctrl+D 等内置绑定,故用 Alt 系。
Pi Agent 的快捷键配置会覆盖默认值。
每个操作可以绑定一个或多个快捷键。
配置文件中未列出的操作保持默认快捷键不变。
查看所有快捷键
在交互模式中,使用以下命令显示所有快捷键及其当前绑定:
/hotkeys
输出片段:
编辑器 tui.editor.cursorUp up tui.editor.cursorDown down tui.editor.cursorWordLeft alt+left, ctrl+left, alt+b tui.input.submit enter 模型与推理 app.model.select ctrl+l app.model.cycleForward ctrl+p app.model.cycleBackward shift+ctrl+p
快捷键操作使用带命名空间的 id,格式为「模块.动作」。
旧版本配置文件里没有命名空间的 id(如 cursorUp、expandTools)会在启动时自动迁移为命名空间 id,无需手动修改。
这个命令会列出所有可用的快捷键操作、当前绑定和所属的功能区域,是排查快捷键冲突或查找特定功能快捷键的最佳方式。
全屏模式下的按键
用 --tui-mode fullscreen 启动时,对话记录(transcript)在终端视口内滚动,编辑区与底部状态区域保持固定。
此时不带修饰键的 home、end、pageUp、pageDown 用于滚动对话记录,它们的 ctrl 变体仍归编辑器使用。
在常规模式下,这两组按键都作用于编辑器。
全屏模式还有专属的搜索与跳转:ctrl+shift+f 搜索对话记录,ctrl+up、ctrl+down 在上一条与下一条标记消息之间跳转。
全屏滚动绑定的优先级高于编辑器绑定,仍可通过普通动作绑定自行调整。
| 按键 | 常规模式 | 全屏模式 |
|---|---|---|
| home、end | 编辑器 | 滚动对话记录 |
| ctrl+home、ctrl+end | 编辑器 | 编辑器 |
| pageUp、pageDown | 编辑器 | 滚动对话记录 |
| ctrl+pageUp、ctrl+pageDown | 编辑器 | 编辑器 |
| ctrl+shift+f(Windows/WSL 为 ctrl+f) | 不生效 | 搜索对话记录 |
| ctrl+up、ctrl+down | 不生效 | 跳转上一条/下一条标记消息 |
