现在位置: 首页 > Pi Agent > 正文

Pi Agent 键盘快捷键定制

Pi Agent 的快捷键完全可定制。本章介绍默认快捷键配置以及如何创建自己的快捷键方案。


配置文件

快捷键配置文件位于 ~/.pi/agent/keybindings.json

修改后执行 /reload 即可生效,无需重启。


快捷键格式

快捷键格式为 修饰键+按键,修饰键包括 ctrl、shift、alt、super,可以组合使用。

其中 super 需要终端能够单独上报该修饰键(通常依赖 Kitty 键盘协议)才会生效,不支持的终端里可能无效。

支持的按键分为以下几类:

类别取值示例
字母a-zctrl+b、alt+d
数字0-9alt+1
功能键f1-f12f2
方向键up、down、left、rightalt+left
特殊键escape、enter、tab、space、backspace、delete、home、end、pageUp、pageDownshift+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不生效跳转上一条/下一条标记消息