Настройка, расширение, параметры платформы и справочник API для Pi.

Настройка терминала

Pi использует Kitty keyboard protocol для надежного обнаружения ключа-модификатора. Большинство современных терминалов поддерживают этот протокол, но некоторые требуют настройки.

Китти, iTerm2

Работайте нестандартно.

Apple Терминал

Pi включает расширенные ключевые отчеты, если они доступны. Если Terminal.app по-прежнему отправляет простой возврат для Shift+Enter, pi использует резервный локальный модификатор macOS, чтобы рассматривать этот возврат как Shift+Enter.

Этот запасной вариант работает только тогда, когда pi работает на том же Mac, что и Terminal.app. Он не может обнаружить локальную клавиатуру через удаленный SSH.

Призрачный

Добавьте в свою конфигурацию Ghostty (~/Library/Application Support/com.mitchellh.ghostty/config в macOS, ~/.config/ghostty/config в Linux):

keybind = alt+backspace=text:\x1b\x7f

В более старых версиях Claude Code могло быть добавлено это сопоставление Ghostty:

keybind = shift+enter=text:\n

Это сопоставление отправляет необработанный байт перевода строки. Внутри pi это неотличимо от Ctrl+J, поэтому tmux и pi больше не видят реального ключевого события shift+enter.

Если Claude Code 2.x или новее является единственной причиной, по которой вы добавили это сопоставление, вы можете удалить его, если только вы не хотите использовать Claude Code в tmux, где оно все еще требует этого сопоставления Ghostty.

Pi связывает Ctrl+J как псевдоним новой строки по умолчанию, поэтому Shift+Enter продолжает работать в tmux через это переназначение без дополнительной настройки pi.

ВезТерм

WezTerm обычно работает «из коробки» для Shift+Enter через xterm ModifyOtherKeys. Чтобы явно использовать протокол клавиатуры Kitty, создайте ~/.wezterm.lua:

local wezterm = require 'wezterm'
local config = wezterm.config_builder()
config.enable_kitty_keyboard = true
return config

В macOS WezTerm по умолчанию привязывает Option+Enter к полноэкранному режиму. Чтобы использовать Option+Enter для постановки в очередь отслеживания pi, добавьте переопределение этого ключа:

local wezterm = require 'wezterm'
local config = wezterm.config_builder()
config.keys = {
  {
    key = 'Enter',
    mods = 'ALT',
    action = wezterm.action.SendString('\x1b[13;3u'),
  },
}
return config

Если у вас уже есть таблица config.keys, добавьте в нее запись.

В WSL WezTerm может потребоваться видимый аппаратный курсор для позиционирования окна-кандидата IME. Если кандидаты CJK IME не следуют за текстовым курсором, установите PI_HARDWARE_CURSOR=1 перед запуском pi или установите от showHardwareCursor до true в настройках.

рвение

Alacritty обычно работает «из коробки» для Shift+Enter. В macOS Option+Enter может отображаться как обычный Enter. Чтобы использовать Option+Enter для последующей очереди Pi, добавьте к ~/.config/alacritty/alacritty.toml:

[[keyboard.bindings]]
key = "Enter"
mods = "Alt"
chars = "\u001b[13;3u"

Перезапустите Alacritty после изменения конфигурации.

VS Code (интегрированный терминал)

VS Code 1.109.5 и новее по умолчанию включают протокол клавиатуры Kitty во встроенном терминале, поэтому Shift+Enter должно работать «из коробки».

Версии VS Code старше 1.109.5 требуют явного назначения клавиш терминала для Shift+Enter.

keybindings.json локации:

  • macOS: ~/Library/Application Support/Code/User/keybindings.json
  • Линукс: ~/.config/Code/User/keybindings.json
  • Окна: %APPDATA%\\Code\\User\\keybindings.json

Добавьте к keybindings.json:

{
  "key": "shift+enter",
  "command": "workbench.action.terminal.sendSequence",
  "args": { "text": "\u001b[13;2u" },
  "when": "terminalFocus"
}

Терминал Windows

Добавьте в settings.json (Ctrl+Shift+ или Настройки → Открыть файл JSON), чтобы перенаправить измененные клавиши Enter, которые использует pi:

{
  "actions": [
    {
      "command": { "action": "sendInput", "input": "\u001b[13;2u" },
      "keys": "shift+enter"
    },
    {
      "command": { "action": "sendInput", "input": "\u001b[13;3u" },
      "keys": "alt+enter"
    }
  ]
}
  • Shift+Enter вставляет новую строку.
  • Терминал Windows по умолчанию привязывает Alt+Enter к полноэкранному режиму. Это не позволяет pi получить Alt+Enter для последующей постановки в очередь.
  • Переназначение Alt+Enter на sendInput вместо этого перенаправляет настоящий ключевой аккорд на число «пи».

Если у вас уже есть массив actions, добавьте в него объекты. Если старое полноэкранное поведение сохраняется, полностью закройте и снова откройте терминал Windows.

xfce4-терминал, терминатор

Эти терминалы имеют ограниченную поддержку escape-последовательностей. Модифицированные клавиши Enter, такие как Ctrl+Enter и Shift+Enter, невозможно отличить от простых Enter, что не позволяет работать пользовательским сочетаниям клавиш, таким как submit: ["ctrl+enter"].

Для получения наилучших результатов используйте терминал, поддерживающий протокол клавиатуры Kitty:

IntelliJ IDEA (интегрированный терминал)

Встроенный терминал имеет ограниченную поддержку escape-последовательностей. Shift+Enter нельзя отличить от Enter в терминале IntelliJ.

Если вы хотите, чтобы аппаратный курсор был виден, установите PI_HARDWARE_CURSOR=1 перед запуском pi (по умолчанию отключено для совместимости).

Для получения наилучших результатов рассмотрите возможность использования специального эмулятора терминала.