키바인딩
모든 키보드 단축키는 ~/.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.halfPageUp 및 tui.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"]
}