JINLOOPEST. 2026
浏览文档
PI DOCUMENTATION更新于

键位绑定

所有键盘快捷键均可通过 ~/.pi/agent/keybindings.json 进行自定义。每个操作可以绑定到一个或多个按键。

配置文件使用与 pi 内部相同的命名空间键位绑定 ID,扩展作者在 keyHint() 和注入的 keybindings 管理器中也使用这些 ID。

使用旧式非命名空间 ID 的旧配置(例如 cursorUpexpandTools)会在启动时自动迁移到命名空间 ID。

编辑 keybindings.json 后,在 pi 中运行 /reload 即可应用更改,无需重启会话。

按键格式

modifier+key,其中修饰键为 ctrl, shift, alt, super(可组合),按键包括:

  • 字母: a-z
  • 数字: 0-9
  • 特殊键: escape, esc, enter, return, tab, space, backspace, delete, insert, clear, home, end, pageUp, pageDown, up, down, left, right
  • 功能键: f1-f12
  • 符号: `, -, =, [, ], \, ;, ', ,, ., /, !, @, #, $, %, ^, &, *, (, ), _, +, |, ~, {, }, :, <, >, ?

修饰键组合: ctrl+shift+x, alt+ctrl+x, ctrl+shift+alt+x, super+k, ctrl+super+k, ctrl+1 等。

super 绑定要求终端能够单独报告修饰键,通常通过 Kitty 键盘协议实现。在不支持该协议的终端中可能无法正常工作。

所有操作

TUI 编辑器光标移动

键位绑定 ID默认值描述
tui.editor.cursorUpup向上移动光标,在顶部浏览更早的历史记录
tui.editor.cursorDowndown向下移动光标,在底部浏览更新的历史记录
tui.editor.historyPrevious(无)选择上一个提示词历史条目
tui.editor.historyNext(无)选择下一个提示词历史条目
tui.editor.cursorLeftleft, ctrl+b向左移动光标
tui.editor.cursorRightright, ctrl+f向右移动光标
tui.editor.cursorWordLeftalt+left, ctrl+left, alt+b向左移动一个词
tui.editor.cursorWordRightalt+right, ctrl+right, alt+f向右移动一个词
tui.editor.cursorLineStarthome, ctrl+home, ctrl+a移动到行首
tui.editor.cursorLineEndend, ctrl+end, ctrl+e移动到行尾
tui.editor.jumpForwardctrl+]向前跳转到指定字符
tui.editor.jumpBackwardctrl+alt+]向后跳转到指定字符
tui.editor.pageUppageUp, ctrl+pageUp向上翻页
tui.editor.pageDownpageDown, ctrl+pageDown向下翻页

专用的历史操作始终会更改历史条目,无论光标在多行提示词中的位置如何。当主编辑器获得焦点时,显式的历史绑定优先于应用程序操作,因此将 tui.editor.historyPrevious 绑定到 ctrl+p 会覆盖该上下文中的模型循环,而不会更改选择器中的 Ctrl+P

TUI 编辑器删除

键位绑定 ID默认值描述
tui.editor.deleteCharBackwardbackspace向后删除字符
tui.editor.deleteCharForwarddelete, ctrl+d向前删除字符
tui.editor.deleteWordBackwardctrl+w, alt+backspace向后删除一个词
tui.editor.deleteWordForwardalt+d, alt+delete向前删除一个词
tui.editor.deleteToLineStartctrl+u删除到行首
tui.editor.deleteToLineEndctrl+k删除到行尾

TUI 输入

键位绑定 ID默认值描述
tui.input.newLineshift+enter, ctrl+j插入新行
tui.input.submitenter提交输入
tui.input.tabtabTab / 自动补全

TUI 剪贴环

键位绑定 ID默认描述
tui.editor.yankctrl+y粘贴最近删除的文本
tui.editor.yankPopalt+y在拉取后循环浏览已删除的文本
tui.editor.undoctrl+-撤销上一次编辑

TUI 剪贴板与选择

按键绑定 ID默认描述
tui.input.copyctrl+c复制选择
tui.select.upup向上移动选择
tui.select.downdown向下移动选择
tui.select.pageUppageUp列表中向上翻页
tui.select.pageDownpageDown列表中向下翻页
tui.select.confirmenter确认选择
tui.select.cancelescape, ctrl+c取消选择

TUI 全屏视口

这些操作在交互模式使用 --tui-mode fullscreen 时适用,并针对主对话滚动区域。双指触控板和鼠标滚轮输入会滚动指针下方的区域,若指针不在对话区域则回退到对话区域,覆盖固定的编辑器/状态/页脚停靠区。单击 OSC 8 超链接会使用默认处理程序打开它。使用主鼠标按钮拖动会选择文本并将其复制到剪贴板;在对话区域的顶部或底部边缘按住会自动滚动到屏幕外内容。请参阅 终端设置 了解特定于终端的鼠标和触控板行为。

全屏对话绑定优先于编辑器绑定。因此,默认的未修饰导航键在全屏模式下控制对话区域,而其 ctrl 变体继续控制编辑器。在全屏模式之外,两种变体都控制编辑器。

按键默认模式全屏模式
home, end编辑器对话
ctrl+home, ctrl+end编辑器编辑器
pageUp, pageDown编辑器对话
ctrl+pageUp, ctrl+pageDown编辑器编辑器

此路由仍可通过普通的操作绑定进行配置。例如,"tui.altScreen.pageUp": "ctrl+pageUp" 使 pageUp 控制编辑器,ctrl+pageUp 在全屏模式下控制对话。绑定 tui.altScreen.halfPageUptui.altScreen.halfPageDown 用于半页步进,或绑定 tui.altScreen.lineUptui.altScreen.lineDown 用于单行步进。设置 "tui.altScreen.pageUp": [] 会完全禁用该对话快捷键。用户绑定会替换该操作的默认值。

按键绑定 ID默认描述
tui.altScreen.pageUppageUp向上滚动对话一页
tui.altScreen.pageDownpageDown向下滚动对话一页
tui.altScreen.halfPageUp(无)向上滚动对话半页
tui.altScreen.halfPageDown(无)向下滚动对话半页
tui.altScreen.lineUp(无)向上滚动对话一行
tui.altScreen.lineDown(无)向下滚动对话一行
tui.altScreen.previousPromptctrl+shift+up跳转到上一条标记的消息
tui.altScreen.nextPromptctrl+shift+down跳转到下一条标记的消息
tui.altScreen.searchctrl+shift+f搜索渲染后的对话
tui.altScreen.searchNextenter, ctrl+g搜索时选择下一个匹配项
tui.altScreen.searchPreviousshift+enter, ctrl+shift+g搜索时选择上一个匹配项
tui.altScreen.searchCloseescape关闭转录搜索
tui.altScreen.tophome滚动到转录开头
tui.altScreen.bottomend滚动到转录末尾并跟随新输出

应用程序

按键绑定 ID默认值描述
app.interruptescape取消 / 中止
app.clearctrl+c清除编辑器(首次)/ 退出(再次)
app.exitctrl+d退出(当编辑器为空时)
app.suspendctrl+z(Windows 上无)挂起到后台
app.editor.externalctrl+g在外部编辑器中打开(externalEditor, $VISUAL, $EDITOR,Windows 上为记事本,或 nano 其他平台)
app.clipboard.pasteImagectrl+v (alt+v 在 Windows 上)从剪贴板粘贴图像或文本

会话

按键绑定 ID默认值描述
app.session.new(无)开始新会话(/new)
app.session.tree(无)打开会话树导航器(/tree)
app.session.fork(无)派生当前会话(/fork)
app.session.resume(无)打开会话恢复选择器(/resume)
app.session.togglePathctrl+p切换路径显示
app.session.toggleSortctrl+s切换排序模式
app.session.toggleNamedFilterctrl+n切换仅命名过滤器
app.session.renamectrl+r重命名会话
app.session.deletectrl+d删除会话
app.session.deleteNoninvasivectrl+backspace当查询为空时删除会话

模型与思考

按键绑定 ID默认值描述
app.model.selectctrl+l打开模型选择器
app.model.cycleForwardctrl+p循环到下一个模型
app.model.cycleBackwardshift+ctrl+p循环到上一个模型
app.thinking.cycleshift+tab循环思考级别
app.thinking.togglectrl+t折叠或展开思考块

显示与消息队列

按键绑定 ID默认值描述
app.tools.expandctrl+o折叠或展开工具输出
app.message.copyctrl+x复制最后一条助手消息,或 /tree
app.message.followUpalt+enter队列后续消息
app.message.dequeuealt+up将排队的消息恢复到编辑器

树导航

按键绑定 ID默认值描述
app.tree.foldOrUpctrl+left, alt+left折叠当前分支段,或跳转到上一个段开头
app.tree.unfoldOrDownctrl+right, alt+right展开当前分支段,或跳转到下一个段开头或分支末尾
app.tree.editLabelshift+l编辑所选树节点的标签
app.tree.toggleLabelTimestampshift+t切换树中标签的时间戳显示
app.tree.filter.defaultctrl+d将树过滤器设置为默认视图
app.tree.filter.noToolsctrl+t切换隐藏工具结果的树过滤器
app.tree.filter.userOnlyctrl+u切换仅显示用户消息的树过滤器
app.tree.filter.labeledOnlyctrl+l切换仅显示已标记条目的树过滤器
app.tree.filter.allctrl+a切换显示所有条目的树过滤器
app.tree.filter.cycleForwardctrl+o向前循环树过滤器
app.tree.filter.cycleBackwardshift+ctrl+o向后循环树过滤器

作用域模型选择器

在作用域模型选择器中使用(通过 /scoped-models).

按键绑定 ID默认值描述
app.models.savectrl+s将当前模型选择保存到设置
app.models.enableAllctrl+a启用所有模型(或所有匹配当前搜索的模型)
app.models.clearAllctrl+x清除所有模型(或所有匹配当前搜索的模型)
app.models.toggleProviderctrl+p切换当前提供商的所有模型
app.models.reorderUpalt+up在循环顺序中将所选模型上移
app.models.reorderDownalt+down在循环顺序中将所选模型下移

自定义配置

创建~/.pi/agent/keybindings.json:

{
  "tui.editor.historyPrevious": "ctrl+p",
  "tui.editor.historyNext": "ctrl+n",
  "tui.editor.deleteWordBackward": ["ctrl+w", "alt+backspace"]
}

每个操作可以有一个键或一个键数组。用户配置会覆盖默认值。

在原生 Windows 上,app.suspend 没有默认绑定,因为 Windows 终端不支持 Unix 作业控制。如果手动绑定它,pi 会显示状态消息而不是挂起。在 WSL 中,正常的 Linux ctrl+z/fg 行为仍然适用。

Emacs 示例

{
  "tui.editor.historyPrevious": "ctrl+p",
  "tui.editor.historyNext": "ctrl+n",
  "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"]
}

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"]
}

本文档内容同步自 PI 官方 GitHub 仓库。

查看源文件