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

키바인딩

모든 키보드 단축키는 ~/.pi/agent/keybindings.json를 통해 맞춤설정할 수 있습니다. 각 작업은 하나 이상의 키에 바인딩될 수 있습니다.

구성 파일은 pi가 내부적으로 사용하고 확장 작성자가 keyHint() 및 삽입된 keybindings 관리자에서 사용하는 것과 동일한 네임스페이스 키 바인딩 ID를 사용합니다.

cursorUp 또는 expandTools와 같은 사전 네임스페이스 ID를 사용하는 이전 구성은 시작 시 네임스페이스 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.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 편집자 삭제

키바인딩 ID 기본 설명
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 입력

키바인딩 ID 기본 설명
tui.input.newLine shift+enter, ctrl+j 새 줄 삽입
tui.input.submit enter 입력 제출
tui.input.tab tab 탭/자동완성

TUI 킬링

키바인딩 ID 기본 설명
tui.editor.yank ctrl+y 가장 최근에 삭제한 텍스트 붙여넣기
tui.editor.yankPop alt+y 잡아당긴 후 삭제된 텍스트를 순환합니다.
tui.editor.undo ctrl+- 마지막 편집 취소

TUI 클립보드 및 선택

키바인딩 ID 기본 설명
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.halfPageUptui.altScreen.halfPageDown를 바인딩합니다. "tui.altScreen.pageUp": []를 설정하면 해당 스크립트 바로가기가 완전히 비활성화됩니다. 사용자 바인딩은 해당 작업의 기본값을 대체합니다.

키바인딩 ID 기본 설명
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 스크립트 끝으로 스크롤하고 새 출력을 따릅니다.

애플리케이션

키바인딩 ID 기본 설명
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 (Windows의 경우 alt+v) 클립보드의 이미지나 텍스트 붙여넣기

세션

키바인딩 ID 기본 설명
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 그리고 생각하기

키바인딩 ID 기본 설명
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 사고 블록 축소 또는 확장

디스플레이 및 메시지 대기열

키바인딩 ID 기본 설명
app.tools.expand ctrl+o 도구 출력 축소 또는 확장
app.message.copy ctrl+x 마지막 보조 메시지 또는 /tree에서 선택한 메시지를 복사하세요.
app.message.followUp alt+enter 대기열 후속 메시지
app.message.dequeue alt+up 대기 중인 메시지를 편집기로 복원

트리 탐색

키바인딩 ID 기본 설명
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를 통해 열림).

키바인딩 ID 기본 설명
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에서는 Windows 터미널이 Unix 작업 제어를 지원하지 않기 때문에 app.suspend에 기본 바인딩이 없습니다. 수동으로 바인딩하면 pi는 일시 중지 대신 상태 메시지를 표시합니다. WSL에서는 일반적인 Linux ctrl+z/fg 동작이 계속 적용됩니다.

이맥스 예

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