Сочетания клавиш
Все сочетания клавиш можно настроить с помощью ~/.pi/agent/keybindings.json. Каждое действие может быть привязано к одной или нескольким клавишам.
В файле конфигурации используются те же идентификаторы привязки клавиш в пространстве имен, которые pi использует внутри себя и которые авторы расширений используют в менеджерах keyHint() и внедренных keybindings.
Старые конфигурации, использующие идентификаторы с предварительно заданным пространством имен, такие как cursorUp или expandTools, автоматически переносятся в идентификаторы с заданным пространством имен при запуске.
После редактирования keybindings.json запустите /reload в pi, чтобы применить изменения без перезапуска сеанса.
Ключевой формат
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 Движение курсора редактора
| Идентификатор сочетания клавиш | По умолчанию | Описание |
|---|---|---|
tui.editor.cursorUp |
up |
Переместите курсор вверх, просматривая старую историю вверху. |
tui.editor.cursorDown |
down |
Переместите курсор вниз, просматривая новую историю внизу. |
tui.editor.historyPrevious |
(никто) | Выберите предыдущую запись истории запросов |
tui.editor.historyNext |
(никто) | Выберите следующую запись истории подсказок |
tui.editor.cursorLeft |
left, ctrl+b |
Переместить курсор влево |
tui.editor.cursorRight |
right, ctrl+f |
Переместить курсор вправо |
tui.editor.cursorWordLeft |
alt+left, ctrl+left, alt+b |
Переместить курсорное слово влево |
tui.editor.cursorWordRight |
alt+right, ctrl+right, alt+f |
Переместить курсорное слово вправо |
tui.editor.cursorLineStart |
home, ctrl+home, ctrl+a |
Перейти к началу строки |
tui.editor.cursorLineEnd |
end, ctrl+end, ctrl+e |
Перейти к концу строки |
tui.editor.jumpForward |
ctrl+] |
Перейти вперед к персонажу |
tui.editor.jumpBackward |
ctrl+alt+] |
Перейти назад к персонажу |
tui.editor.pageUp |
pageUp, ctrl+pageUp |
Прокручивать вверх по страницам |
tui.editor.pageDown |
pageDown, ctrl+pageDown |
Пролистнуть вниз по странице |
Специальные действия с историей всегда изменяют записи истории, независимо от положения курсора в многострочной подсказке. Явные привязки истории имеют приоритет над действиями приложения, пока основной редактор находится в фокусе, поэтому привязка от tui.editor.historyPrevious до ctrl+p переопределяет цикличность модели в этом контексте без изменения Ctrl+P в селекторах.
TUI Удаление редактора
| Идентификатор сочетания клавиш | По умолчанию | Описание |
|---|---|---|
tui.editor.deleteCharBackward |
backspace |
Удалить символ задом наперед |
tui.editor.deleteCharForward |
delete, ctrl+d |
Удалить символ вперед |
tui.editor.deleteWordBackward |
ctrl+w, alt+backspace |
Удалить слово задом наперед |
tui.editor.deleteWordForward |
alt+d, alt+delete |
Удалить слово вперед |
tui.editor.deleteToLineStart |
ctrl+u |
Удалить в начало строки |
tui.editor.deleteToLineEnd |
ctrl+k |
Удалить до конца строки |
TUI Ввод
| Идентификатор сочетания клавиш | По умолчанию | Описание |
|---|---|---|
tui.input.newLine |
shift+enter, ctrl+j |
Вставить новую строку |
tui.input.submit |
enter |
Отправить данные |
tui.input.tab |
tab |
Вкладка/автозаполнение |
TUI Кольцо убийства
| Идентификатор сочетания клавиш | По умолчанию | Описание |
|---|---|---|
tui.editor.yank |
ctrl+y |
Вставить последний удаленный текст |
tui.editor.yankPop |
alt+y |
Перебирать удаленный текст после извлечения |
tui.editor.undo |
ctrl+- |
Отменить последнее редактирование |
TUI Буфер обмена и выделение
| Идентификатор сочетания клавиш | По умолчанию | Описание |
|---|---|---|
tui.input.copy |
ctrl+c |
Копировать выделение |
tui.select.up |
up |
Переместить выделение вверх |
tui.select.down |
down |
Переместить выделение вниз |
tui.select.pageUp |
pageUp |
На страницу вверх в списке |
tui.select.pageDown |
pageDown |
На страницу вниз в списке |
tui.select.confirm |
enter |
Подтвердить выбор |
tui.select.cancel |
escape, 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.halfPageUp и tui.altScreen.halfPageDown для небольших шагов транскрипции, сохраняя при этом полностраничные привязки. Настройка "tui.altScreen.pageUp": [] полностью отключает этот ярлык расшифровки. Привязки пользователя заменяют значения по умолчанию для этого действия.
| Идентификатор сочетания клавиш | По умолчанию | Описание |
|---|---|---|
tui.altScreen.pageUp |
pageUp |
Прокрутить транскрипт вверх на одну страницу |
tui.altScreen.pageDown |
pageDown |
Прокрутите транскрипт вниз на одну страницу |
tui.altScreen.halfPageUp |
(никто) | Прокрутить транскрипт вверх на полстраницы |
tui.altScreen.halfPageDown |
(никто) | Прокрутите транскрипт вниз на полстраницы. |
tui.altScreen.previousPrompt |
ctrl+shift+up |
Перейти к предыдущему отмеченному сообщению |
tui.altScreen.nextPrompt |
ctrl+shift+down |
Перейти к следующему отмеченному сообщению |
tui.altScreen.top |
home |
Прокрутите до начала стенограммы |
tui.altScreen.bottom |
end |
Прокрутите до конца стенограммы и следуйте новым выводам. |
Приложение
| Идентификатор сочетания клавиш | По умолчанию | Описание |
|---|---|---|
app.interrupt |
escape |
Отмена/прерывание |
app.clear |
ctrl+c |
Очистить редактор (первый) / выйти (второй) |
app.exit |
ctrl+d |
Выход (когда редактор пуст) |
app.suspend |
ctrl+z (нет в Windows) |
Приостановить в фоновом режиме |
app.editor.external |
ctrl+g |
Открыть во внешнем редакторе (externalEditor, $VISUAL, $EDITOR, «Блокнот» в Windows или nano в другом месте) |
app.clipboard.pasteImage |
ctrl+v (alt+v в Windows) |
Вставить изображение или текст из буфера обмена |
Сессии
| Идентификатор сочетания клавиш | По умолчанию | Описание |
|---|---|---|
app.session.new |
(никто) | Начать новый сеанс (/new) |
app.session.tree |
(никто) | Открыть навигатор session tree (/tree) |
app.session.fork |
(никто) | Форкнуть текущую сессию (/fork) |
app.session.resume |
(никто) | Открыть окно выбора резюме сеанса (/resume) |
app.session.togglePath |
ctrl+p |
Переключить отображение пути |
app.session.toggleSort |
ctrl+s |
Переключить режим сортировки |
app.session.toggleNamedFilter |
ctrl+n |
Переключить фильтр только по имени |
app.session.rename |
ctrl+r |
Переименовать сеанс |
app.session.delete |
ctrl+d |
Удалить сеанс |
app.session.deleteNoninvasive |
ctrl+backspace |
Удалить сеанс, когда запрос пуст |
Models и мышление
| Идентификатор сочетания клавиш | По умолчанию | Описание |
|---|---|---|
app.model.select |
ctrl+l |
Открыть выбор модели |
app.model.cycleForward |
ctrl+p |
Переход к следующей модели |
app.model.cycleBackward |
shift+ctrl+p |
Перейти к предыдущей модели |
app.thinking.cycle |
shift+tab |
Циклический уровень мышления |
app.thinking.toggle |
ctrl+t |
Свернуть или расширить блоки мышления |
Дисплей и очередь сообщений
| Идентификатор сочетания клавиш | По умолчанию | Описание |
|---|---|---|
app.tools.expand |
ctrl+o |
Свернуть или развернуть выходные данные инструмента |
app.message.copy |
ctrl+x |
Скопируйте последнее сообщение помощника или выбранное сообщение в /tree. |
app.message.followUp |
alt+enter |
Сообщение о последующем сообщении в очереди |
app.message.dequeue |
alt+up |
Восстановить сообщения в очереди в редакторе |
Древовидная навигация
| Идентификатор сочетания клавиш | По умолчанию | Описание |
|---|---|---|
app.tree.foldOrUp |
ctrl+left, alt+left |
Свернуть текущий сегмент ветки или перейти к началу предыдущего сегмента. |
app.tree.unfoldOrDown |
ctrl+right, alt+right |
Разверните текущий сегмент ветки или перейдите к началу или концу следующего сегмента. |
app.tree.editLabel |
shift+l |
Редактировать метку на выбранном узле дерева |
app.tree.toggleLabelTimestamp |
shift+t |
Переключить временные метки меток в дереве |
app.tree.filter.default |
ctrl+d |
Установить фильтр дерева для просмотра по умолчанию |
app.tree.filter.noTools |
ctrl+t |
Переключить фильтр дерева, который скрывает результаты инструмента |
app.tree.filter.userOnly |
ctrl+u |
Переключить фильтр дерева, который показывает только сообщения пользователя |
app.tree.filter.labeledOnly |
ctrl+l |
Переключить фильтр дерева, который показывает только помеченные записи |
app.tree.filter.all |
ctrl+a |
Переключить фильтр дерева, который показывает все записи |
app.tree.filter.cycleForward |
ctrl+o |
Циклический фильтр дерева вперед |
app.tree.filter.cycleBackward |
shift+ctrl+o |
Циклический фильтр дерева назад |
Селектор с областью действия Models
Используется внутри селектора моделей с ограниченной областью действия (открывается через /scoped-models).
| Идентификатор сочетания клавиш | По умолчанию | Описание |
|---|---|---|
app.models.save |
ctrl+s |
Сохранить текущий выбор модели в настройках |
app.models.enableAll |
ctrl+a |
Включить все модели (или все, соответствующие текущему поиску) |
app.models.clearAll |
ctrl+x |
Очистить все модели (или все, соответствующие текущему поиску) |
app.models.toggleProvider |
ctrl+p |
Переключить все модели текущего поставщика |
app.models.reorderUp |
alt+up |
Переместить выбранную модель вверх в порядке цикла |
app.models.reorderDown |
alt+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"]
}Пример Вима
{
"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"]
}