Pengikatan kunci
Semua pintasan keyboard dapat disesuaikan melalui ~/.pi/agent/keybindings.json. Setiap tindakan dapat terikat pada satu atau lebih kunci.
File konfigurasi menggunakan id pengikat kunci dengan spasi nama yang sama yang digunakan pi secara internal dan yang digunakan penulis ekstensi di keyHint() dan menyuntikkan manajer keybindings.
Konfigurasi lama yang menggunakan id dengan spasi nama sebelumnya seperti cursorUp atau expandTools dimigrasikan secara otomatis ke id dengan spasi nama saat startup.
Setelah mengedit keybindings.json, jalankan /reload di pi untuk menerapkan perubahan tanpa memulai ulang sesi.
Format Kunci
modifier+key dengan pengubah ctrl, shift, alt, super (dapat digabungkan) dan kuncinya adalah:
- Huruf:
a-z - Digit:
0-9 - Tombol khusus:
escape,esc,enter,return,tab,space,backspace,delete,insert,clear,home,end,pageUp,pageDown,up,down,left,right - Tombol fungsi:
f1-f12 - Simbol:
`,-,=,[,],\,;,',,,.,/,!,@,#,$,%,^,&,*,(,),_,+,|,~,{,},:,<,>,?
Kombinasi pengubah: ctrl+shift+x, alt+ctrl+x, ctrl+shift+alt+x, super+k, ctrl+super+k, ctrl+1, dll.
Pengikatan super memerlukan terminal yang melaporkan pengubah secara terpisah, biasanya melalui protokol keyboard Kitty. Mereka mungkin tidak dapat bekerja di terminal tanpa dukungan tersebut.
Semua Tindakan
TUI Gerakan Kursor Editor
| ID pengikatan kunci | Bawaan | Keterangan |
|---|---|---|
tui.editor.cursorUp |
up |
Pindahkan kursor ke atas, telusuri riwayat lama di bagian atas |
tui.editor.cursorDown |
down |
Pindahkan kursor ke bawah, telusuri riwayat baru di bagian bawah |
tui.editor.historyPrevious |
(tidak ada) | Pilih entri riwayat prompt sebelumnya |
tui.editor.historyNext |
(tidak ada) | Pilih entri riwayat prompt berikutnya |
tui.editor.cursorLeft |
left, ctrl+b |
Gerakkan kursor ke kiri |
tui.editor.cursorRight |
right, ctrl+f |
Gerakkan kursor ke kanan |
tui.editor.cursorWordLeft |
alt+left, ctrl+left, alt+b |
Pindahkan kata kursor ke kiri |
tui.editor.cursorWordRight |
alt+right, ctrl+right, alt+f |
Pindahkan kata kursor ke kanan |
tui.editor.cursorLineStart |
home, ctrl+home, ctrl+a |
Pindah ke baris awal |
tui.editor.cursorLineEnd |
end, ctrl+end, ctrl+e |
Pindah ke akhir baris |
tui.editor.jumpForward |
ctrl+] |
Lompat ke depan ke karakter |
tui.editor.jumpBackward |
ctrl+alt+] |
Lompat mundur ke karakter |
tui.editor.pageUp |
pageUp, ctrl+pageUp |
Gulir ke atas berdasarkan halaman |
tui.editor.pageDown |
pageDown, ctrl+pageDown |
Gulir ke bawah berdasarkan halaman |
Tindakan riwayat khusus selalu mengubah entri riwayat, terlepas dari posisi kursor dalam perintah multiline. Pengikatan riwayat eksplisit lebih diutamakan daripada tindakan aplikasi saat editor utama fokus, jadi pengikatan tui.editor.historyPrevious ke ctrl+p akan mengesampingkan perputaran model dalam konteks tersebut tanpa mengubah Ctrl+P pada penyeleksi.
TUI Penghapusan Editor
| ID pengikatan kunci | Bawaan | Keterangan |
|---|---|---|
tui.editor.deleteCharBackward |
backspace |
Hapus karakter mundur |
tui.editor.deleteCharForward |
delete, ctrl+d |
Hapus karakter ke depan |
tui.editor.deleteWordBackward |
ctrl+w, alt+backspace |
Hapus kata mundur |
tui.editor.deleteWordForward |
alt+d, alt+delete |
Hapus kata maju |
tui.editor.deleteToLineStart |
ctrl+u |
Hapus ke baris awal |
tui.editor.deleteToLineEnd |
ctrl+k |
Hapus sampai akhir baris |
TUI Masukan
| ID pengikatan kunci | Bawaan | Keterangan |
|---|---|---|
tui.input.newLine |
shift+enter, ctrl+j |
Sisipkan baris baru |
tui.input.submit |
enter |
Kirim masukan |
tui.input.tab |
tab |
Tab / pelengkapan otomatis |
TUI Bunuh Cincin
| ID pengikatan kunci | Bawaan | Keterangan |
|---|---|---|
tui.editor.yank |
ctrl+y |
Tempel teks yang terakhir dihapus |
tui.editor.yankPop |
alt+y |
Telusuri teks yang dihapus setelah penarikan |
tui.editor.undo |
ctrl+- |
Membatalkan pengeditan terakhir |
TUI Papan Klip dan Seleksi
| ID pengikatan kunci | Bawaan | Keterangan |
|---|---|---|
tui.input.copy |
ctrl+c |
Salin pilihan |
tui.select.up |
up |
Pindahkan pilihan ke atas |
tui.select.down |
down |
Pindahkan pilihan ke bawah |
tui.select.pageUp |
pageUp |
Halaman dalam daftar |
tui.select.pageDown |
pageDown |
Halaman bawah dalam daftar |
tui.select.confirm |
enter |
Konfirmasikan pilihan |
tui.select.cancel |
escape, ctrl+c |
Batalkan pilihan |
TUI Area Pandang Layar Penuh
Tindakan ini berlaku ketika mode interaktif menggunakan --tui-mode fullscreen dan menargetkan wilayah gulir transkrip utama. Trackpad dua jari dan input roda mouse menggulir wilayah di bawah penunjuk, kembali ke transkrip melalui dok editor/status/footer tetap. Mengklik hyperlink OSC 8 akan membukanya di handler default. Menyeret dengan tombol mouse utama akan memilih teks dan menyalinnya ke clipboard; memegang di tepi atas atau bawah transkrip akan otomatis menggulir ke konten di luar layar.
Pengikatan transkrip layar penuh lebih diutamakan daripada pengikatan editor. Oleh karena itu, tombol navigasi default yang tidak dimodifikasi mengontrol transkrip dalam mode layar penuh, sementara varian ctrl terus mengontrol editor. Di luar mode layar penuh, kedua varian mengontrol editor.
| Kunci | Modus bawaan | Modus layar penuh |
|---|---|---|
home, end |
Editor | Salinan |
ctrl+home, ctrl+end |
Editor | Editor |
pageUp, pageDown |
Editor | Salinan |
ctrl+pageUp, ctrl+pageDown |
Editor | Editor |
Perutean ini tetap dapat dikonfigurasi melalui pengikatan tindakan biasa. Misalnya, "tui.altScreen.pageUp": "ctrl+pageUp" membuat pageUp mengontrol editor dan ctrl+pageUp mengontrol transkrip dalam mode layar penuh. Ikat tui.altScreen.halfPageUp dan tui.altScreen.halfPageDown untuk langkah transkrip yang lebih kecil sambil mempertahankan penjilidan satu halaman penuh. Pengaturan "tui.altScreen.pageUp": [] menonaktifkan pintasan transkrip itu sepenuhnya. Pengikatan pengguna menggantikan default untuk tindakan itu.
| ID pengikatan kunci | Bawaan | Keterangan |
|---|---|---|
tui.altScreen.pageUp |
pageUp |
Gulir transkrip ke atas satu halaman |
tui.altScreen.pageDown |
pageDown |
Gulir transkrip ke bawah satu halaman |
tui.altScreen.halfPageUp |
(tidak ada) | Gulir transkrip ke atas setengah halaman |
tui.altScreen.halfPageDown |
(tidak ada) | Gulir transkrip ke bawah setengah halaman |
tui.altScreen.previousPrompt |
ctrl+shift+up |
Lompat ke pesan yang ditandai sebelumnya |
tui.altScreen.nextPrompt |
ctrl+shift+down |
Lompat ke pesan yang ditandai berikutnya |
tui.altScreen.top |
home |
Gulir ke awal transkrip |
tui.altScreen.bottom |
end |
Gulir ke akhir transkrip dan ikuti keluaran baru |
Aplikasi
| ID pengikatan kunci | Bawaan | Keterangan |
|---|---|---|
app.interrupt |
escape |
Batalkan / batalkan |
app.clear |
ctrl+c |
Hapus editor (pertama) / keluar (kedua) |
app.exit |
ctrl+d |
Keluar (ketika editor kosong) |
app.suspend |
ctrl+z (tidak ada di Windows) |
Tangguhkan ke latar belakang |
app.editor.external |
ctrl+g |
Buka di editor eksternal (externalEditor, $VISUAL, $EDITOR, Notepad di Windows, atau nano di tempat lain) |
app.clipboard.pasteImage |
ctrl+v (alt+v di Windows) |
Tempel gambar atau teks dari clipboard |
Sesi
| ID pengikatan kunci | Bawaan | Keterangan |
|---|---|---|
app.session.new |
(tidak ada) | Mulai sesi baru (/new) |
app.session.tree |
(tidak ada) | Buka session tree navigator (/tree) |
app.session.fork |
(tidak ada) | Garpu sesi saat ini (/fork) |
app.session.resume |
(tidak ada) | Buka pemilih resume sesi (/resume) |
app.session.togglePath |
ctrl+p |
Alihkan tampilan jalur |
app.session.toggleSort |
ctrl+s |
Alihkan mode pengurutan |
app.session.toggleNamedFilter |
ctrl+n |
Alihkan filter khusus nama |
app.session.rename |
ctrl+r |
Ganti nama sesi |
app.session.delete |
ctrl+d |
Hapus sesi |
app.session.deleteNoninvasive |
ctrl+backspace |
Hapus sesi saat kueri kosong |
Models dan Berpikir
| ID pengikatan kunci | Bawaan | Keterangan |
|---|---|---|
app.model.select |
ctrl+l |
Buka pemilih model |
app.model.cycleForward |
ctrl+p |
Putar ke model berikutnya |
app.model.cycleBackward |
shift+ctrl+p |
Siklus ke model sebelumnya |
app.thinking.cycle |
shift+tab |
Tingkat berpikir siklus |
app.thinking.toggle |
ctrl+t |
Perkecil atau perluas blok pemikiran |
Tampilan dan Antrean Pesan
| ID pengikatan kunci | Bawaan | Keterangan |
|---|---|---|
app.tools.expand |
ctrl+o |
Perkecil atau perluas keluaran alat |
app.message.copy |
ctrl+x |
Salin pesan asisten terakhir, atau pesan yang dipilih di /tree |
app.message.followUp |
alt+enter |
Pesan tindak lanjut antrian |
app.message.dequeue |
alt+up |
Pulihkan pesan yang antri ke editor |
Navigasi Pohon
| ID pengikatan kunci | Bawaan | Keterangan |
|---|---|---|
app.tree.foldOrUp |
ctrl+left, alt+left |
Lipat segmen cabang saat ini, atau lompat ke awal segmen sebelumnya |
app.tree.unfoldOrDown |
ctrl+right, alt+right |
Buka segmen cabang saat ini, atau lompat ke awal segmen atau ujung cabang berikutnya |
app.tree.editLabel |
shift+l |
Edit label pada simpul pohon yang dipilih |
app.tree.toggleLabelTimestamp |
shift+t |
Alihkan stempel waktu label di pohon |
app.tree.filter.default |
ctrl+d |
Setel filter pohon ke tampilan default |
app.tree.filter.noTools |
ctrl+t |
Alihkan filter pohon yang menyembunyikan hasil alat |
app.tree.filter.userOnly |
ctrl+u |
Alihkan filter pohon yang hanya menampilkan pesan pengguna |
app.tree.filter.labeledOnly |
ctrl+l |
Alihkan filter pohon yang hanya menampilkan entri berlabel |
app.tree.filter.all |
ctrl+a |
Alihkan filter pohon yang menampilkan semua entri |
app.tree.filter.cycleForward |
ctrl+o |
Filter pohon siklus maju |
app.tree.filter.cycleBackward |
shift+ctrl+o |
Siklus filter pohon mundur |
Cakupan Models Pemilih
Digunakan di dalam pemilih model tercakup (dibuka melalui /scoped-models).
| ID pengikatan kunci | Bawaan | Keterangan |
|---|---|---|
app.models.save |
ctrl+s |
Simpan pilihan model saat ini ke pengaturan |
app.models.enableAll |
ctrl+a |
Aktifkan semua model (atau semua yang cocok dengan pencarian saat ini) |
app.models.clearAll |
ctrl+x |
Hapus semua model (atau semua yang cocok dengan pencarian saat ini) |
app.models.toggleProvider |
ctrl+p |
Alihkan semua model untuk penyedia saat ini |
app.models.reorderUp |
alt+up |
Pindahkan model yang dipilih ke atas dalam urutan siklus |
app.models.reorderDown |
alt+down |
Pindahkan model yang dipilih ke bawah dalam urutan siklus |
Konfigurasi Kustom
Buat ~/.pi/agent/keybindings.json:
{
"tui.editor.historyPrevious": "ctrl+p",
"tui.editor.historyNext": "ctrl+n",
"tui.editor.deleteWordBackward": ["ctrl+w", "alt+backspace"]
}Setiap tindakan dapat memiliki satu kunci atau serangkaian kunci. Konfigurasi pengguna mengesampingkan default.
Pada Windows asli, app.suspend tidak memiliki pengikatan default karena terminal Windows tidak mendukung kontrol pekerjaan Unix. Jika Anda mengikatnya secara manual, pi menampilkan pesan status alih-alih menangguhkan. Di WSL, perilaku normal Linux ctrl+z/fg masih berlaku.
Contoh Emacs
{
"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"]
}Contoh 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"]
}