Настройка сочетаний клавиш Pi Agent
Сочетания клавиш Pi Agent полностью настраиваются. В этой главе описывается конфигурация сочетаний клавиш по умолчанию и то, как создать собственную схему сочетаний клавиш.
Файл конфигурации
Файл конфигурации сочетаний клавиш находится в~/.pi/agent/keybindings.json。
После изменения выполните/reload, чтобы изменения вступили в силу без перезапуска.
Формат сочетаний клавиш
Формат сочетания клавиш:Modifier+Key. К модификаторам относятся 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 в интерактивном режиме.
Операции в редакторе
Эта группа действует только в области редактора и отвечает за перемещение курсора и удаление текста.
| Действие | Сочетание клавиш по умолчанию | Описание | Mode |
|---|---|---|---|
| Переместить курсор вверх | 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 | Перейти к концу строки. | Область редактора |
| Удалить предыдущий символ | возврат на одну позицию | Удалить символ перед курсором. | Область редактора |
| Удалить следующий символ | delete, ctrl+d | Удалить символ после курсора (действие редактирования). | Область редактора |
| Удалить предыдущее слово | ctrl+w, alt+backspace | Удалить слово перед курсором. | Область редактора |
| Удалить следующее слово | alt+d, alt+delete | Удалить слово после курсора. | Область редактора |
| Удалить до начала строки | ctrl+u | Удалить содержимое от курсора до начала строки. | Область редактора |
| Удалить до конца строки | ctrl+k | Удалить содержимое от курсора до конца строки. | Область редактора |
Ввод и отправка
Эта группа управляет переносом, автодополнением и отправкой содержимого, а также применяется к области редактора.
| Действие | Сочетание клавиш по умолчанию | Описание | Mode |
|---|---|---|---|
| Перевод строки | shift+enter, ctrl+j | Вставить символ новой строки. | Область редактора |
| Отправить | enter | Отправить введённое содержимое. | Область редактора |
| Tab / Автодополнение | tab | Запустить автодополнение пути. | Область редактора |
| Отменить | ctrl+- | Отменить последний шаг редактирования. | Область редактора |
| Вставить удалённый текст | ctrl+y | Вставить последний удалённый текст. | Область редактора |
Приложение и сообщения
Эта группа отвечает за прерывание работы ИИ, управление содержимым редактора и очередью сообщений и в основном не зависит от фокуса редактора.
| Действие | Сочетание клавиш по умолчанию | Описание | Mode |
|---|---|---|---|
| Прервать / Отменить | escape | Отменить текущую операцию ИИ. | Глобальный |
| Очистить область редактора | ctrl+c | Очистить содержимое редактора; нажмите ещё раз, чтобы выйти из программы. | Область редактора |
| Выход | ctrl+d | Выйти из программы, когда редактор пуст (это относится к действию app.exit, отдельно от действий удаления в предыдущей таблице). | Область редактора |
| Внешний редактор | ctrl+g | Редактировать текущий ввод во внешнем редакторе. | Область редактора |
| Вставить изображение | ctrl+v | Вставить изображение из буфера обмена (Windows: alt+v). | Область редактора |
| Копировать ответ ИИ | ctrl+x | Скопировать последнее сообщение ИИ. | Область редактора |
| Отправить последующее сообщение | alt+enter | Поставить сообщение в очередь последующих сообщений. | Область редактора |
| Извлечь сообщение из очереди | alt+up | Вернуть сообщение из очереди в редактор. | Область редактора |
Модель и рассуждения
Эта группа используется для переключения моделей и настройки поведения рассуждений и доступна в любое время во время разговора.
| Действие | Сочетание клавиш по умолчанию | Описание | Mode |
|---|---|---|---|
| Селектор моделей | ctrl+l | Открыть селектор моделей. | Глобальный |
| Переключить модель вперёд | ctrl+p | Переключиться на следующую модель. | Глобальный |
| Переключить модель назад | shift+ctrl+p | Переключиться на предыдущую модель. | Глобальный |
| Переключить уровень рассуждений | shift+tab | Циклически переключать уровни рассуждений. | Область редактора |
| Переключить отображение рассуждений | ctrl+t | Развернуть/свернуть процесс рассуждений ИИ. | Глобальный |
| Переключить вывод инструмента | ctrl+o | Развернуть/свернуть вывод вызова инструмента. | Глобально (в /tree browser, переключает режим фильтра) |
Настройка пользовательских сочетаний клавиш
Просто перечислите операции, которые вы хотите переопределить, в 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 с пространствами имён в формате "module.action".
ID без пространств имён в старых файлах конфигурации (таких как cursorUp, expandTools) будут автоматически перенесены в ID с пространствами имён при запуске; ручное изменение не требуется.
Эта команда выводит список всех доступных действий горячих клавиш, текущих привязок и связанных с ними функциональных областей, что делает её лучшим способом для устранения конфликтов привязок клавиш или поиска горячей клавиши для конкретной функции.
Клавиши в полноэкранном режиме
используйте--tui-mode fullscreenПри запуске транскрипт прокручивается в пределах области просмотра терминала, а редактор и нижняя область состояния остаются фиксированными.
На этом этапе клавиши home, end, pageUp и pageDown без клавиш-модификаторов используются для прокрутки транскрипта, а их варианты с ctrl по-прежнему относятся к редактору.
В обычном режиме оба набора клавиш действуют на редактор.
В полноэкранном режиме также есть специальные средства поиска и навигации: ctrl+shift+f ищет по транскрипту, а ctrl+up / ctrl+down переключаются между предыдущим и следующим помеченными сообщениями.
Привязки прокрутки в полноэкранном режиме имеют приоритет над привязками редактора и по-прежнему могут быть настроены через обычные привязки действий.
| Keys | Обычный режим | Полноэкранный режим |
|---|---|---|
| home、end | Редактор | Прокрутка транскрипта |
| ctrl+home、ctrl+end | Редактор | Редактор |
| pageUp、pageDown | Редактор | Прокрутка транскрипта |
| ctrl+pageUp、ctrl+pageDown | Редактор | Редактор |
| ctrl+shift+f (ctrl+f в Windows/WSL) | Не действует | Поиск по стенограмме |
| ctrl+up、ctrl+down | Не действует | Перейти к предыдущему/следующему отмеченному сообщению |