Pi 구성, 확장, 플랫폼 설정 및 API 참조.

터미널 설정

Pi는 안정적인 수정자 키 감지를 위해 Kitty keyboard protocol를 사용합니다. 대부분의 최신 터미널은 이 프로토콜을 지원하지만 일부는 구성이 필요합니다.

Kitty, iTerm2

즉시 사용 가능

Apple Terminal

Pi 가능한 경우 향상된 키 보고를 활성화합니다. Terminal.app이 여전히 Shift+Enter에 대한 일반 Return을 보내는 경우 pi는 로컬 macOS 수정자 대체를 사용하여 해당 Return을 Shift+Enter로 처리합니다.

이 대체 방법은 pi가 Terminal.app과 동일한 Mac에서 실행되는 경우에만 작동합니다. 원격 SSH을 통해 로컬 키보드를 감지할 수 없습니다.

Ghostty

Ghostty 구성에 추가합니다(macOS에서는 ~/Library/Application Support/com.mitchellh.ghostty/config, Linux에서는 ~/.config/ghostty/config):

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 이상이면 이를 제거할 수 있습니다. 단, 여전히 Ghostty 매핑이 필요한 tmux에서 Claude Code를 사용하려는 경우는 예외입니다.

Pi는 Ctrl+J를 기본 개행 별칭으로 바인딩하므로 Shift+Enter는 추가 Pi 구성 없이 다시 매핑을 통해 tmux에서 계속 작동합니다.

WezTerm

WezTerm은 일반적으로 xterm ModifyOtherKeys를 통해 Shift+Enter가 바로 작동합니다. Kitty 키보드 프로토콜을 명시적으로 사용하려면 ~/.wezterm.lua을 생성하세요.

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

macOS에서 WezTerm은 기본적으로 Option+Enter를 전체 화면으로 바인딩합니다. pi 후속 조치 대기열에 Option+Enter를 사용하려면 다음 키 재정의를 추가하세요.

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를 실행하기 전에 PI_HARDWARE_CURSOR=1를 설정하거나 설정에서 showHardwareCursor에서 true로 설정하세요.

Alacritty

Alacritty는 일반적으로 Shift+Enter에서 기본적으로 작동합니다. macOS에서는 Option+Enter가 일반 Enter로 도착할 수 있습니다. pi 후속 대기열에 Option+Enter를 사용하려면 ~/.config/alacritty/alacritty.toml에 추가하세요.

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

구성을 변경한 후 Alacritty를 다시 시작하십시오.

VS Code (Integrated Terminal)

VS Code 1.109.5 이상에서는 기본적으로 통합 터미널에서 Kitty 키보드 프로토콜을 활성화하므로 Shift+Enter가 즉시 작동합니다.

1.109.5 이전 VS Code 버전에는 Shift+Enter에 대한 명시적인 터미널 키 바인딩이 필요합니다.

keybindings.json 위치:

  • 맥OS: ~/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 Terminal

pi가 사용하는 수정된 Enter 키를 전달하려면 settings.json(Ctrl+Shift+ 또는 설정 → JSON 파일 열기)에 추가하세요.

{
  "actions": [
    {
      "command": { "action": "sendInput", "input": "\u001b[13;2u" },
      "keys": "shift+enter"
    },
    {
      "command": { "action": "sendInput", "input": "\u001b[13;3u" },
      "keys": "alt+enter"
    }
  ]
}
  • Shift+Enter 새 줄을 삽입합니다.
  • Windows Terminal은 기본적으로 Alt+Enter를 전체 화면으로 바인딩합니다. 이는 pi가 후속 대기열에 대해 Alt+Enter을 수신하는 것을 방지합니다.
  • Alt+EntersendInput로 다시 매핑하면 실제 키 코드가 대신 pi로 전달됩니다.

actions 배열이 이미 있는 경우 해당 배열에 개체를 추가하세요. 이전 전체 화면 동작이 지속되면 Windows Terminal을 완전히 닫았다가 다시 엽니다.

xfce4-terminal, Terminator

이러한 터미널은 이스케이프 시퀀스 지원이 제한되어 있습니다. Ctrl+EnterShift+Enter와 같은 수정된 Enter 키는 일반 Enter와 구별할 수 없으므로 submit: ["ctrl+enter"]와 같은 사용자 정의 키 바인딩이 작동하지 않습니다.

최상의 경험을 위해서는 Kitty 키보드 프로토콜을 지원하는 터미널을 사용하십시오.

IntelliJ IDEA(통합 터미널)

내장 터미널은 이스케이프 시퀀스 지원이 제한되어 있습니다. IntelliJ 터미널에서는 Shift+Enter를 Enter와 구별할 수 없습니다.

하드웨어 커서를 표시하려면 pi를 실행하기 전에 PI_HARDWARE_CURSOR=1를 설정하세요(호환성을 위해 기본적으로 비활성화되어 있음).

최상의 경험을 위해서는 전용 터미널 에뮬레이터를 사용하는 것이 좋습니다.